[wiki/inscription.py] bon choix d'etudes

darcs-hash:20090706170352-bd074-6b795b38663b331e6c41da9855fe34a304f9f4ca.gz
This commit is contained in:
Antoine Durand-Gasselin 2009-07-06 19:03:52 +02:00
parent fbbf0295eb
commit 7e46d3e60c

View file

@ -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('<img name="verdict" />'))
@ -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):