diff --git a/wiki/action/inscription.py b/wiki/action/inscription.py
index 8719dcfc..21e5ff69 100644
--- a/wiki/action/inscription.py
+++ b/wiki/action/inscription.py
@@ -58,8 +58,8 @@ class Field():
if check != None: self.check_hook = check
else: self.check_hook = (lambda x: True)
- def fill(self, string):
- self.input = string[0]
+ def fill(self, post):
+ self.input = post.get(self.id, [''])[0]
def check(self):
self.error_txt= '' # Devrait pourtant être déjà vide
@@ -91,6 +91,147 @@ class Field():
request.add_msg(self.error_msg)
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('
'))
+
+ 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):
"""Vérifie que le champ input de l'objet passé en argument est un nom valide."""
analysed_content = unicodedata.normalize('NFKD', self.input)
@@ -146,36 +287,23 @@ class FormulaireInscription():
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.ip = ip
+
self.champs = [ Field("nom", "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("pass1", u"Mot de passe", input_type='password', check=is_correctpassword),
- pass2_field,
+ PasswordField("pass", u"Mot de passe", input_type='password'),
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):
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'))
f = html.UL(CLASS="formulaire_preinscription")
@@ -199,7 +327,7 @@ def _check_form(post, formulaire):
"""
errors = []
for field in formulaire.champs:
- field.fill(post.get(field.id, ''))
+ field.fill(post)
for field in formulaire.champs:
if not field.check():
errors.append(field.id)
@@ -212,7 +340,6 @@ def _perform_inscription(request, formulaire):
results += '%(id)s: %(content)s\n' % field.__dict__
request.write(results)
-
def execute(pagename, request):
request.page = Page(request, pagename)
request.formatter.setPage(request.page)
@@ -229,7 +356,7 @@ def execute(pagename, request):
return(_perform_inscription(request, formulaire))
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='')
request.write(request.formatter.startContent("content"))
form = _create_form(request, parser, formulaire)