[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
|
||||
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('<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):
|
||||
"""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='<script type="text/javascript" src="/wiki/crans-www/js/passwd.js"></script>')
|
||||
request.write(request.formatter.startContent("content"))
|
||||
|
||||
form = _create_form(request, parser, formulaire)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue