[inscription.py] même si ça ne marche pas, ça avance
darcs-hash:20090702060256-bd074-ab492040ebcc2a840147055ed4437dbaffd84a59.gz
This commit is contained in:
parent
23f3251fd6
commit
ac80f43a4f
1 changed files with 150 additions and 23 deletions
|
@ -58,8 +58,8 @@ class Field():
|
||||||
if check != None: self.check_hook = check
|
if check != None: self.check_hook = check
|
||||||
else: self.check_hook = (lambda x: True)
|
else: self.check_hook = (lambda x: True)
|
||||||
|
|
||||||
def fill(self, string):
|
def fill(self, post):
|
||||||
self.input = string[0]
|
self.input = post.get(self.id, [''])[0]
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
self.error_txt= '' # Devrait pourtant être déjà vide
|
self.error_txt= '' # Devrait pourtant être déjà vide
|
||||||
|
@ -91,6 +91,147 @@ class Field():
|
||||||
request.add_msg(self.error_msg)
|
request.add_msg(self.error_msg)
|
||||||
return champ
|
return champ
|
||||||
|
|
||||||
|
class MenuField(Field):
|
||||||
|
etablissements = [ ("ENS", u"ENS Cachan"),
|
||||||
|
("IUT Cachan", u"IUT Cachan"),
|
||||||
|
("Maximilien Sorre", u"Maximilien Sorre"),
|
||||||
|
("Gustave Eiffel", u"Gustave Eiffel"),
|
||||||
|
("P1", u"Paris I"),
|
||||||
|
("P2", u"Paris II"),
|
||||||
|
("P3", u"Paris III"),
|
||||||
|
("P4", u"Paris IV"),
|
||||||
|
("P5", u"Paris V"),
|
||||||
|
("P6", u"Paris VI"),
|
||||||
|
("P7", u"Paris VII"),
|
||||||
|
("P8", u"Paris VIII"),
|
||||||
|
("P9", u"Paris IX"),
|
||||||
|
("P10", u"Paris X"),
|
||||||
|
("P11", u"Paris XI"),
|
||||||
|
("P12", u"Paris XII"),
|
||||||
|
("P13", u"Paris XIII"),
|
||||||
|
("IUFM", u"IUFM") ]
|
||||||
|
|
||||||
|
labos = [ ("CMLA", u"CMLA - Centre de Mathématiques et de Leurs Applications"),
|
||||||
|
("GAPP", u"GAPP - Groupe d'Analyse des Politiques Publiques"),
|
||||||
|
("IDHE", u"IDHE - Institutions et Dynamiques Historiques de l'Economie"),
|
||||||
|
("LBPA", u"LBPA - Laboratoire de Biotechnologies et Pharmacologie génétique Appliquées"),
|
||||||
|
("LMT", u"LMT - Laboratoire de Mécanique et Technologie"),
|
||||||
|
("LPQM", u"LPQM - Laboratoire de Photonique Quantique et Moléculaire"),
|
||||||
|
("LSV", u"LSV - Laboratoire de Spécification et Vérification"),
|
||||||
|
("LURPA", u"LURPA - Laboratoire Universitaire de Recherche en Production Automatisée"),
|
||||||
|
("PPSM", u"PPSM - Laboratoire de Photophysique et Photochimie Supramoléculaires et Macromoléculaires"),
|
||||||
|
("SATIE", u"SATIE - Systèmes et Applications des Technologies de l\'Information et de l'Energie"),
|
||||||
|
("STEF", u"STEF - Sciences Techniques Education Formation") ]
|
||||||
|
|
||||||
|
annee_ens = [ ("1", u"1A (license)"), ("2", u"2A (master 1)"),
|
||||||
|
("3", u"3A (agrégation)"), ("4", u"4A (master 2)"),
|
||||||
|
("5", u"5A (thèse 1)"), ("6", u"6A (thèse 2)"),
|
||||||
|
("7", u"7A (thèse 3)"), ("8", u"8A+") ]
|
||||||
|
|
||||||
|
annee = [ ("-2", u"Seconde"), ("-1", u"Première"), ("0", u"Terminale"),
|
||||||
|
("1", u"BAC+1 (L1)"), ("2", u"BAC+2 (L2)"), ("3", u"BAC+3 (L3)"),
|
||||||
|
("4", u"BAC+4 (M1)"), ("5", u"BAC+5 (M2)"), ("6", u"BAC+6 (thèse 1)"),
|
||||||
|
("7", u"BAC+7 (thèse 2)"), ("8", u"BAC+8 (thèse 3)"), ("9", "Autre") ]
|
||||||
|
|
||||||
|
sections = [ ("A0", u"A0 - Informatique"),
|
||||||
|
("A1", u"A1 - Mathématiques"),
|
||||||
|
("A2", u"A2 - Physique fondamentale"),
|
||||||
|
("A'2", u"A'2 - Physique appliquée"),
|
||||||
|
("A''2", u"A''2 - Chimie"),
|
||||||
|
("A3", u"A3 - Biochimie"),
|
||||||
|
("EEA", u"EEA"),
|
||||||
|
("B123", u"B123 - Technologie mécanique"),
|
||||||
|
("B1", u"B1 - Mécanique"),
|
||||||
|
("B2", u"B2 - Génie civil"),
|
||||||
|
("B3", u"B3 - Génie mécanique"),
|
||||||
|
("B1", u"B1 - Mécanique"),
|
||||||
|
("B2", u"B2 - Génie civil"),
|
||||||
|
("B3", u"B3 - Génie mécanique"),
|
||||||
|
("B4", u"B4 - Génie électrique"),
|
||||||
|
("C", u"C - Art et création industrielle"),
|
||||||
|
("D2", u"D2 - Economie gestion"),
|
||||||
|
("D3", u"D3 - Sciences sociales"),
|
||||||
|
("E", u"E - Anglais") ]
|
||||||
|
|
||||||
|
prompt1 = u"Choisissez votre année d'étude"
|
||||||
|
prompt2 = u"Choisissez votre filière"
|
||||||
|
prompt2bis = u"Précisez votre filière"
|
||||||
|
prompt2ter= u"Précisez votre laboratoire"
|
||||||
|
|
||||||
|
def render(self, request, parser):
|
||||||
|
variants = [ '', '1', '2', '2bis', '2ter' ]
|
||||||
|
for i in variants:
|
||||||
|
eval('champ%s = html.UL(CLASS="formulaire_field")' %i)
|
||||||
|
eval('champ%s.append(html.LI(CLASS="formulaire_id").append(self.prompt%s))'% (i,i))
|
||||||
|
def gen_menu(nom, champs, **kw):
|
||||||
|
menu = html.SELECT(NAME=nom, **kw)
|
||||||
|
for opt, legend in champs:
|
||||||
|
menu.append(html.OPTION(VALUE=opt).append(legend))
|
||||||
|
return menu
|
||||||
|
|
||||||
|
menu = gen_menu('etablissement', self.etablissements,
|
||||||
|
onchange='TestEtudes(document.forms.preinscription.etablissement.value)')
|
||||||
|
champ.append(html.LI(CLASS="formulaire_input").append(menu))
|
||||||
|
|
||||||
|
menu = gen_menu('annee', self.annee)
|
||||||
|
champ1.append(html.LI(CLASS="nens_input").append(menu))
|
||||||
|
|
||||||
|
menu = gen_menu('annee_ens', self.annee_ens,
|
||||||
|
onchange='TestAnnee(document.forms.preinscription.annee_ens.value)')
|
||||||
|
champ2.append(html.LI(CLASS="ens_input").append(menu))
|
||||||
|
|
||||||
|
menu = gen_menu('section_ens', self.sections)
|
||||||
|
champ2bis.append(html.LI(CLASS="ens_yinput").append(menu))
|
||||||
|
|
||||||
|
menu = gen_menu('labo_ens', self.labos)
|
||||||
|
champ2ter.append(html.LI(CLASS="ens_oinput").append(menu))
|
||||||
|
|
||||||
|
if self.error_txt:
|
||||||
|
error = wikiutil.renderText(request, parser, self.error_txt)
|
||||||
|
champ.append(html.LI(CLASS="formulaire_error").append(error))
|
||||||
|
|
||||||
|
if self.error_msg:
|
||||||
|
request.add_msg(self.error_msg)
|
||||||
|
return (u'%s\n'* len(variants)) % (eval('champ'+i) for i in variants)
|
||||||
|
|
||||||
|
|
||||||
|
class PasswordField(Field):
|
||||||
|
def fill(self, post):
|
||||||
|
self.input = post.get(self.id, [''])[0]
|
||||||
|
self.input2 = post.get(self.id+'2',[''])[0]
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
self.error_txt= '' # Devrait pourtant être déjà vide
|
||||||
|
|
||||||
|
self.default = ''
|
||||||
|
if self.input == self.input2:
|
||||||
|
self.content = self.input
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
self.error_txt = u'Les deux mots de passe diffèrent'
|
||||||
|
return False
|
||||||
|
|
||||||
|
def render(self, request, parser):
|
||||||
|
champ = html.UL(CLASS="formulaire_field")
|
||||||
|
champ.append(html.LI(CLASS="formulaire_id").append(self.prompt))
|
||||||
|
|
||||||
|
input = html.INPUT(type=self.input_type,onchange="testPassword(document.forms.preinscription.pass.value)", name=self.id)
|
||||||
|
champ.append(html.LI(CLASS="formulaire_input").append(input))
|
||||||
|
champ.append(html.LI().append('<img name="verdict" />'))
|
||||||
|
|
||||||
|
champ2 = html.UL(CLASS="formulaire_field")
|
||||||
|
champ2.append(html.LI(CLASS="formulaire_id").append('Retapez le mot de passe'))
|
||||||
|
|
||||||
|
input = html.INPUT(type=self.input_type, name=self.id+'2')
|
||||||
|
champ2.append(html.LI(CLASS="formulaire_input").append(input))
|
||||||
|
|
||||||
|
if self.error_txt:
|
||||||
|
error = wikiutil.renderText(request, parser, self.error_txt)
|
||||||
|
champ2.append(html.LI(CLASS="formulaire_error").append(error))
|
||||||
|
|
||||||
|
return u'%s\n%s\n' % (champ, champ2)
|
||||||
|
|
||||||
|
|
||||||
def is_name(self):
|
def is_name(self):
|
||||||
"""Vérifie que le champ input de l'objet passé en argument est un nom valide."""
|
"""Vérifie que le champ input de l'objet passé en argument est un nom valide."""
|
||||||
analysed_content = unicodedata.normalize('NFKD', self.input)
|
analysed_content = unicodedata.normalize('NFKD', self.input)
|
||||||
|
@ -146,36 +287,23 @@ class FormulaireInscription():
|
||||||
|
|
||||||
ip = request.remote_addr
|
ip = request.remote_addr
|
||||||
|
|
||||||
def erase_password(self):
|
|
||||||
self.default = ''
|
|
||||||
return True
|
|
||||||
|
|
||||||
pass2_field = Field("pass2", u"Mot de passe", input_type='password', check=erase_password)
|
|
||||||
|
|
||||||
def is_correctpassword(self):
|
|
||||||
self.default = ''
|
|
||||||
if pass2_field.input == self.input:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
self.error_txt=u'Attention les mots de passe diffèrent'
|
|
||||||
return False
|
|
||||||
|
|
||||||
mac_field = Field("mac", u"Adresse physique de votre carte réseau", check=is_valid_mac, default=get_mac(ip))
|
mac_field = Field("mac", u"Adresse physique de votre carte réseau", check=is_valid_mac, default=get_mac(ip))
|
||||||
mac_field.ip = ip
|
mac_field.ip = ip
|
||||||
|
|
||||||
|
|
||||||
self.champs = [ Field("nom", "Nom", check=is_name),
|
self.champs = [ Field("nom", "Nom", check=is_name),
|
||||||
Field("prenom", u"Prénom", check=is_name),
|
Field("prenom", u"Prénom", check=is_name),
|
||||||
Field("tel", u"Numéro de téléphone", check=is_phonenumber),
|
Field("tel", u"Numéro de téléphone", check=is_phonenumber),
|
||||||
Field("pass1", u"Mot de passe", input_type='password', check=is_correctpassword),
|
PasswordField("pass", u"Mot de passe", input_type='password'),
|
||||||
pass2_field,
|
|
||||||
Field("dns", u"Nom de votre ordinateur", check=is_dns),
|
Field("dns", u"Nom de votre ordinateur", check=is_dns),
|
||||||
mac_field
|
mac_field,
|
||||||
|
MenuField('etablissement', u"Choisissez votre établissement d'études")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def _create_form(request, parser, formulaire):
|
def _create_form(request, parser, formulaire):
|
||||||
url = request.page.url(request)
|
url = request.page.url(request)
|
||||||
ret = html.FORM(action=url)
|
ret = html.FORM(action=url, NAME="preinscription")
|
||||||
ret.append(html.INPUT(type='hidden', name='action', value='inscription'))
|
ret.append(html.INPUT(type='hidden', name='action', value='inscription'))
|
||||||
|
|
||||||
f = html.UL(CLASS="formulaire_preinscription")
|
f = html.UL(CLASS="formulaire_preinscription")
|
||||||
|
@ -199,7 +327,7 @@ def _check_form(post, formulaire):
|
||||||
"""
|
"""
|
||||||
errors = []
|
errors = []
|
||||||
for field in formulaire.champs:
|
for field in formulaire.champs:
|
||||||
field.fill(post.get(field.id, ''))
|
field.fill(post)
|
||||||
for field in formulaire.champs:
|
for field in formulaire.champs:
|
||||||
if not field.check():
|
if not field.check():
|
||||||
errors.append(field.id)
|
errors.append(field.id)
|
||||||
|
@ -212,7 +340,6 @@ def _perform_inscription(request, formulaire):
|
||||||
results += '%(id)s: %(content)s\n' % field.__dict__
|
results += '%(id)s: %(content)s\n' % field.__dict__
|
||||||
request.write(results)
|
request.write(results)
|
||||||
|
|
||||||
|
|
||||||
def execute(pagename, request):
|
def execute(pagename, request):
|
||||||
request.page = Page(request, pagename)
|
request.page = Page(request, pagename)
|
||||||
request.formatter.setPage(request.page)
|
request.formatter.setPage(request.page)
|
||||||
|
@ -229,7 +356,7 @@ def execute(pagename, request):
|
||||||
return(_perform_inscription(request, formulaire))
|
return(_perform_inscription(request, formulaire))
|
||||||
|
|
||||||
request.emit_http_headers()
|
request.emit_http_headers()
|
||||||
request.theme.send_title(u"Formulaire de préinscription", pagename=pagename)
|
request.theme.send_title(u"Formulaire de préinscription", pagename=pagename, html_head='<script type="text/javascript" src="/wiki/crans-www/js/passwd.js"></script>')
|
||||||
request.write(request.formatter.startContent("content"))
|
request.write(request.formatter.startContent("content"))
|
||||||
|
|
||||||
form = _create_form(request, parser, formulaire)
|
form = _create_form(request, parser, formulaire)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue