# -*- coding: iso-8859-1 -*- u""" _vi 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: .|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; . .Zc .ii^ )Xo ]XX MoinMoin - Formulaire d'inscription Un formulaire de préinscription au Crans Copyright 2009 Antoine Durand-Gasselin 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()