[wiki/inscription.py] Un vrai formulaire qui donne l'adresse mac

* C'est encore trs brouillon, mais il y a de nombreux cas débiles qui sont
   spécifiés

darcs-hash:20090601195758-bd074-7885297aa40161d4d5169338b21460282566270e.gz
This commit is contained in:
Antoine Durand-Gasselin 2009-06-01 21:57:58 +02:00
parent e6752812ca
commit 292c933dff

View file

@ -30,25 +30,27 @@ SXXo )XZX: |i> ._%i>~~+|ii| .i| ._s_ass,,. ._a%ssssssss
License: GPLv3
"""
import re, locale, base64
import re, locale, base64, sys
from commands import getstatusoutput as gso
sys.path.append("/usr/scripts/gestion")
from iptools import AddrInNet
from MoinMoin import wikiutil
from MoinMoin.widget import html
from MoinMoin.Page import Page
from MoinMoin.PageEditor import PageEditor
CHAMPS = ["nom Nom", u"prenom Prénom", "dob Date de naissance",
"etudes Choisir une filière", "tel Numéro de téléphone",
"chbre Chambre (ex: J042g, M666)", "section Filière d'études",
u"annee année", "mail Adresse mail", "dns Nom de machine fixe",
"mac Adresse MAC"]
u"etudes Choisir une filière", u"tel Numéro de téléphone",
"chbre Chambre (ex: J042g, M666)", u"section Filière d'études",
u"annee année", "mail Adresse mail", "dns Nom de machine fixe"]
#"mac Adresse MAC"]
def _create_form(request):
url = request.page.url(request)
ret = html.FORM(action=url)
ret.append(html.INPUT(type='hidden', name='action', value='inscription'))
f = html.UL(id="formulaire_inscription")
f = html.UL(CLASS="formulaire_preinscription")
for lbl, txt in [c.split(' ', 1) for c in CHAMPS]:
champ = html.UL()
@ -56,6 +58,22 @@ def _create_form(request):
champ.append(html.LI().append(html.INPUT(type="text", name=lbl)))
f.append(html.LI().append(champ))
# On récupère l'adrese MAC
ip = request.remote_addr
if not AddrInNet(ip, '138.231.136.0/21'): request.theme.add_msg(
u"tu n'es pas dans le bon sous-réseau, je ne peux pas deviner ton adresse MAC", 'error')
status, mac = gso("/usr/sbin/arp %s | perl -nle '{print $& if /00(:\S\S)*/}'" % ip) # gruik, gruik, grUUIIIk !
mac= mac.strip()
if status: request.theme.add_msg(u"Problème d'arp (ou de perl...)", 'error')
if not re.match("00(:[a-fA-F0-9][a-fA-F0-9]){5}", mac):
request.theme.add_msg(u"Mac non valide: %s" % mac)
mac = 'XX:XX:XX:XX:XX:XX'
champ = html.UL()
champ.append(html.LI().append(html.Text("Adresse MAC")))
champ.append(html.LI().append(html.INPUT(type="text", name='mac', value=mac)))
f.append(html.LI().append(champ))
ret.append(f)
ret.append(html.INPUT(type="submit", name="inscrire", value=u"Me préinscrire"))
return unicode(ret)
@ -63,23 +81,21 @@ def _create_form(request):
def execute(pagename, request):
page = Page(request, pagename)
form = request.form
if request.dicts.has_member("GroupeAdmin", request.user.name):
request.theme.add_msg("Oui, tu es gentil", "dialog")
else:
request.theme.add_msg("Non, car tu es méchant", "error")
return(page.send_page())
if not request.dicts.has_member("GroupeAdmin", request.user.name):
request.theme.add_msg(u"Non, car tu es méchant", "error")
return(page.send_page())
if form.has_key('inscrire'):
pass
request.theme.add_msg(u"Un peu de patience, je ne suis pas encore implémenté", "error")
return(page.send_page())
else: # show create form
request.emit_http_headers()
form = _create_form(request)
request.theme.send_title(u"Formulaire de préinscription", pagename=pagename)
request.write(request.formatter.startContent("content"))
# THIS IS A BIG HACK. IT NEEDS TO BE CLEANED UP
request.write(_create_form(request))
request.write(form)
request.write(request.formatter.endContent())
request.theme.send_footer(pagename)
request.theme.send_closing_html()