scripts/wiki/action/inscription.py
Antoine Durand-Gasselin 292c933dff [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
2009-06-01 21:57:58 +02:00

102 lines
4 KiB
Python

# -*- coding: iso-8859-1 -*-
u"""
_vi
<Ii _aa.
:I> aZ2^
v` .we^
. . .. + _2~
._auqXZZX ._auqXZZZ` ...._... ~ ._|ii~
.aXZZY""^~~ vX#Z?""~~~._=ii|+++++++ii=, _=|+~-
JXXX` )XXX' _|i+~ .__..._. +l= -~-
SXXo )XZX: |i> ._%i>~~+|ii| .i| ._s_ass,,. ._a%ssssssss
-SXZ6,,. )XZX: =l> _li+~` iii| .ii _uZZXX??YZ#Za, uXUX*?!!!!!!!
"!XZ#ZZZZZXZXZ` <i> =i: .|ii| .l|.dZXr 4XXo.XXXs,.
-~^^^^^^^` -||, +i|=. |ii| :i>:ZXZ( ]XZX.-"SXZUZUXoa,,
+l|, ~~|++|++i|||+~:ZXZ( ]ZZX ---~"?Z#m
.__;=- ~+l|=____.___, :ZXZ( ]ZXX_________auXX2
._||>+~- . -~+~++~~~- :ZXZ( ]ZXZZ#######UX*!"
-+-- .>` _
.<}` 3;
.<l> .Zc
.ii^ )Xo
]XX
MoinMoin - Formulaire d'inscription
Un formulaire de préinscription au Crans
Copyright 2009 Antoine Durand-Gasselin <adg@crans.org>
License: GPLv3
"""
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",
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(CLASS="formulaire_preinscription")
for lbl, txt in [c.split(' ', 1) for c in CHAMPS]:
champ = html.UL()
champ.append(html.LI().append(html.Text(txt)))
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)
def execute(pagename, request):
page = Page(request, pagename)
form = request.form
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'):
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(form)
request.write(request.formatter.endContent())
request.theme.send_footer(pagename)
request.theme.send_closing_html()