[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.PageEditor import PageEditor
from MoinMoin.formatter.text_html import Formatter 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(): class Field():
"""Une classe pour représenter les champs """Une classe pour représenter les champs
@ -50,11 +112,13 @@ class Field():
error_msg='' error_msg=''
error_field='' 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.id = id
self.prompt = html.Text(prompt) self.prompt = html.Text(prompt)
self.default = default self.default = default
self.input_type = input_type self.input_type = input_type
self.CLASS= CLASS
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)
@ -77,7 +141,7 @@ class Field():
return ok return ok
def render(self, request, parser): 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)) champ.append(html.LI(CLASS="formulaire_id").append(self.prompt))
input = html.INPUT(type=self.input_type,name=self.id,value=self.default) input = html.INPUT(type=self.input_type,name=self.id,value=self.default)
@ -92,107 +156,24 @@ class Field():
return champ return champ
class MenuField(Field): class MenuField(Field):
etablissements = [ ("ENS", u"ENS Cachan"), def __init__(self, id, prompt, fields):
("IUT Cachan", u"IUT Cachan"), Field.__init__(self, id, prompt)
("Maximilien Sorre", u"Maximilien Sorre"), self.fields = fields
("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): def render(self, request, parser):
variants = [ '', '1', '2', '2bis', '2ter' ] champ = html.UL(CLASS="formulaire_field_%s" % self.id)
for i in variants: champ.append(html.LI(CLASS="formulaire_id").append(self.prompt))
eval('champ%s = html.UL(CLASS="formulaire_field")' %i) menu = html.SELECT(NAME=self.id, onchange='TestEtudes()')
eval('champ%s.append(html.LI(CLASS="formulaire_id").append(self.prompt%s))'% (i,i)) for opt, legend in self.fields:
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)) menu.append(html.OPTION(VALUE=opt).append(legend))
return menu champ.append(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: if self.error_txt:
error = wikiutil.renderText(request, parser, self.error_txt) error = wikiutil.renderText(request, parser, self.error_txt)
champ.append(html.LI(CLASS="formulaire_error").append(error)) champ.append(html.LI(CLASS="formulaire_error").append(error))
if self.error_msg: if self.error_msg:
request.add_msg(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): class PasswordField(Field):
@ -215,7 +196,7 @@ class PasswordField(Field):
champ = html.UL(CLASS="formulaire_field") champ = html.UL(CLASS="formulaire_field")
champ.append(html.LI(CLASS="formulaire_id").append(self.prompt)) 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(CLASS="formulaire_input").append(input))
champ.append(html.LI().append('<img name="verdict" />')) champ.append(html.LI().append('<img name="verdict" />'))
@ -291,13 +272,21 @@ class FormulaireInscription():
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),
PasswordField("pass", u"Mot de passe", input_type='password'), PasswordField("pass", u"Mot de passe", input_type='password'),
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") 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")
] ]