This commit is contained in:
Emmanuel Viennet 2022-09-03 09:29:40 +02:00
parent a155655e00
commit d3fd164768
2 changed files with 22 additions and 21 deletions

View File

@ -336,7 +336,11 @@ class TF(object):
msg.append("valeur invalide (%s) pour le champ '%s'" % (val, field))
ok = 0
if "validator" in descr:
if not descr["validator"](val, field):
try:
valid = descr["validator"](val, field)
except Exception:
valid = False
if not valid:
msg.append("valeur invalide (%s) pour le champ '%s'" % (val, field))
ok = 0
elif descr.get("input_type") == "datedmy":

View File

@ -30,6 +30,7 @@ issu de ScoDoc7 / ZScolar.py
Emmanuel Viennet, 2021
"""
import datetime
import requests
import time
@ -69,7 +70,8 @@ from app.scodoc.sco_exceptions import (
ScoException,
ScoValueError,
)
from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message
from app.scodoc.TrivialFormulator import DMY_REGEXP, TrivialFormulator, tf_error_message
from app.scodoc.gen_tables import GenTable
from app.scodoc import html_sco_header
from app.scodoc import sco_import_etuds
@ -1314,10 +1316,16 @@ def _etudident_create_or_edit_form(edit):
submitlabel = "Ajouter cet étudiant"
H.append(
"""<h2>Création d'un étudiant</h2>
<p>En général, il est <b>recommandé</b> d'importer les étudiants depuis Apogée.
N'utilisez ce formulaire que <b>pour les cas particuliers</b> ou si votre établissement
n'utilise pas d'autre logiciel de gestion des inscriptions.</p>
<p><em>L'étudiant créé ne sera pas inscrit.
<p class="warning">En général, il est <b>recommandé</b> d'importer les
étudiants depuis Apogée ou via un fichier Excel (menu <b>Inscriptions</b>
dans le semestre).
</p>
<p>
N'utilisez ce formulaire au cas par cas que <b>pour les cas particuliers</b>
ou si votre établissement n'utilise pas d'autre logiciel de gestion des
inscriptions.
</p>
<p class"warning"><em>L'étudiant créé ne sera pas inscrit.
Pensez à l'inscrire dans un semestre !</em></p>
"""
)
@ -1336,17 +1344,6 @@ def _etudident_create_or_edit_form(edit):
initvalues = initvalues[0]
submitlabel = "Modifier les données"
# recuperation infos Apogee
# Si on a le code NIP, fait juste une requete, sinon tente de rechercher par nom
# (la recherche par nom ne fonctionne plus à Paris 13)
# XXX A terminer
# code_nip = initvalues.get("code_nip", "")
# if code_nip:
# try:
# infos = sco_portal_apogee.get_etud_apogee(code_nip)
# except ValueError:
# infos = None
# pass # XXX a terminer
vals = scu.get_request_args()
nom = vals.get("nom", None)
if nom is None:
@ -1363,16 +1360,14 @@ def _etudident_create_or_edit_form(edit):
formatted_infos = [
"""
<script type="text/javascript">
/* <![CDATA[ */
function copy_nip(nip) {
document.tf.code_nip.value = nip;
}
/* ]]> */
</script>
<ol>"""
]
nanswers = len(infos)
nmax = 10 # nb max de reponse montrees
nmax = 10 # nb max de reponse montrées
infos = infos[:nmax]
for i in infos:
formatted_infos.append("<li><ul>")
@ -1431,6 +1426,8 @@ def _etudident_create_or_edit_form(edit):
"title": "Date de naissance",
"input_type": "date",
"explanation": "j/m/a",
"validator": lambda val, _: DMY_REGEXP.match(val)
and (ndb.DateDMYtoISO(val) < datetime.date.today().isoformat()),
},
),
("lieu_naissance", {"title": "Lieu de naissance", "size": 32}),
@ -1472,7 +1469,7 @@ def _etudident_create_or_edit_form(edit):
"title": "Année bac",
"type": "int",
"min_value": 1945,
"max_value": 2100,
"max_value": datetime.date.today().year + 1,
"explanation": "année obtention du bac",
},
),