[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 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 import wikiutil
from MoinMoin.widget import html from MoinMoin.widget import html
from MoinMoin.Page import Page from MoinMoin.Page import Page
from MoinMoin.PageEditor import PageEditor from MoinMoin.PageEditor import PageEditor
CHAMPS = ["nom Nom", u"prenom Prénom", "dob Date de naissance", CHAMPS = ["nom Nom", u"prenom Prénom", "dob Date de naissance",
"etudes Choisir une filière", "tel Numéro de téléphone", u"etudes Choisir une filière", u"tel Numéro de téléphone",
"chbre Chambre (ex: J042g, M666)", "section Filière d'études", "chbre Chambre (ex: J042g, M666)", u"section Filière d'études",
u"annee année", "mail Adresse mail", "dns Nom de machine fixe", u"annee année", "mail Adresse mail", "dns Nom de machine fixe"]
"mac Adresse MAC"] #"mac Adresse MAC"]
def _create_form(request): def _create_form(request):
url = request.page.url(request) url = request.page.url(request)
ret = html.FORM(action=url) ret = html.FORM(action=url)
ret.append(html.INPUT(type='hidden', name='action', value='inscription')) 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]: for lbl, txt in [c.split(' ', 1) for c in CHAMPS]:
champ = html.UL() champ = html.UL()
@ -56,6 +58,22 @@ def _create_form(request):
champ.append(html.LI().append(html.INPUT(type="text", name=lbl))) champ.append(html.LI().append(html.INPUT(type="text", name=lbl)))
f.append(html.LI().append(champ)) 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")) ret.append(html.INPUT(type="submit", name="inscrire", value=u"Me préinscrire"))
return unicode(ret) return unicode(ret)
@ -63,23 +81,21 @@ def _create_form(request):
def execute(pagename, request): def execute(pagename, request):
page = Page(request, pagename) page = Page(request, pagename)
form = request.form form = request.form
if request.dicts.has_member("GroupeAdmin", request.user.name): if not request.dicts.has_member("GroupeAdmin", request.user.name):
request.theme.add_msg("Oui, tu es gentil", "dialog") request.theme.add_msg(u"Non, car tu es méchant", "error")
else:
request.theme.add_msg("Non, car tu es méchant", "error")
return(page.send_page()) return(page.send_page())
if form.has_key('inscrire'): 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 else: # show create form
request.emit_http_headers() request.emit_http_headers()
form = _create_form(request)
request.theme.send_title(u"Formulaire de préinscription", pagename=pagename) request.theme.send_title(u"Formulaire de préinscription", pagename=pagename)
request.write(request.formatter.startContent("content")) request.write(request.formatter.startContent("content"))
# THIS IS A BIG HACK. IT NEEDS TO BE CLEANED UP # 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.write(request.formatter.endContent())
request.theme.send_footer(pagename) request.theme.send_footer(pagename)
request.theme.send_closing_html() request.theme.send_closing_html()