diff --git a/wiki/action/inscription.py b/wiki/action/inscription.py index 21e5ff69..1c61847d 100644 --- a/wiki/action/inscription.py +++ b/wiki/action/inscription.py @@ -40,6 +40,68 @@ from MoinMoin.Page import Page from MoinMoin.PageEditor import PageEditor from MoinMoin.formatter.text_html import Formatter +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"), + ("other", u"Autre...") ] + +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_ETUDE = [ ("-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_ENS = [ ("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") ] + class Field(): """Une classe pour représenter les champs @@ -50,11 +112,13 @@ class Field(): error_msg='' error_field='' - def __init__(self, id, prompt, default = "", input_type = "text", check=None): + def __init__(self, id, prompt, default = "", input_type = "text", + check=None, CLASS="formulaire_field"): self.id = id self.prompt = html.Text(prompt) self.default = default self.input_type = input_type + self.CLASS= CLASS if check != None: self.check_hook = check else: self.check_hook = (lambda x: True) @@ -77,7 +141,7 @@ class Field(): return ok def render(self, request, parser): - champ = html.UL(CLASS="formulaire_field") + champ = html.UL(CLASS=self.CLASS) champ.append(html.LI(CLASS="formulaire_id").append(self.prompt)) input = html.INPUT(type=self.input_type,name=self.id,value=self.default) @@ -92,107 +156,24 @@ class Field(): 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 __init__(self, id, prompt, fields): + Field.__init__(self, id, prompt) + self.fields = fields 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)) - + champ = html.UL(CLASS="formulaire_field_%s" % self.id) + champ.append(html.LI(CLASS="formulaire_id").append(self.prompt)) + menu = html.SELECT(NAME=self.id, onchange='TestEtudes()') + for opt, legend in self.fields: + menu.append(html.OPTION(VALUE=opt).append(legend)) + champ.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) + return champ class PasswordField(Field): @@ -215,7 +196,7 @@ class PasswordField(Field): 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) + input = html.INPUT(type=self.input_type,onchange="testPassword()", name=self.id) champ.append(html.LI(CLASS="formulaire_input").append(input)) champ.append(html.LI().append('')) @@ -291,14 +272,22 @@ class FormulaireInscription(): 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), - PasswordField("pass", u"Mot de passe", input_type='password'), - Field("dns", u"Nom de votre ordinateur", check=is_dns), - mac_field, - MenuField('etablissement', u"Choisissez votre établissement d'études") - ] + 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), + PasswordField("pass", u"Mot de passe", input_type='password'), + Field("dns", u"Nom de votre ordinateur", check=is_dns), + mac_field, + MenuField('etablissement', u"Établissement d'études", ETABLISSEMENTS), + Field("etablissement_autre", u"Précisez votre établissement d'études", + check=is_name, CLASS='formulaire_field_etablissement_autre'), + MenuField('annee_ens', u"Année scolaire à l'ENS", ANNEE_ENS), + MenuField('annee', u"Choisissez votre année scolaire", ANNEE_ETUDE), + MenuField('section_ens', u"Section", SECTIONS_ENS), + MenuField('labo', u"Laboratoire", LABOS), + Field("section", u"Précisez votre section", CLASS="formulaire_field_section") + ] def _create_form(request, parser, formulaire):