forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -337,7 +337,7 @@ def assiduites_group(with_query: bool = False):
|
|||||||
try:
|
try:
|
||||||
etuds = [int(etu) for etu in etuds]
|
etuds = [int(etu) for etu in etuds]
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return json_error(404, "Le champs etudids n'est pas correctement formé")
|
return json_error(404, "Le champ etudids n'est pas correctement formé")
|
||||||
|
|
||||||
# Vérification que tous les étudiants sont du même département
|
# Vérification que tous les étudiants sont du même département
|
||||||
query = Identite.query.filter(Identite.id.in_(etuds))
|
query = Identite.query.filter(Identite.id.in_(etuds))
|
||||||
|
@ -17,7 +17,7 @@ def UEParcoursECTSForm(ue: UniteEns) -> FlaskForm:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
parcours: list[ApcParcours] = ue.formation.referentiel_competence.parcours
|
parcours: list[ApcParcours] = ue.formation.referentiel_competence.parcours
|
||||||
# Initialise un champs de saisie par parcours
|
# Initialise un champ de saisie par parcours
|
||||||
for parcour in parcours:
|
for parcour in parcours:
|
||||||
ects = ue.get_ects(parcour, only_parcours=True)
|
ects = ue.get_ects(parcour, only_parcours=True)
|
||||||
setattr(
|
setattr(
|
||||||
|
@ -82,7 +82,7 @@ class ConfigCASForm(FlaskForm):
|
|||||||
|
|
||||||
cas_attribute_id = StringField(
|
cas_attribute_id = StringField(
|
||||||
label="Attribut CAS utilisé comme id (laissez vide pour prendre l'id par défaut)",
|
label="Attribut CAS utilisé comme id (laissez vide pour prendre l'id par défaut)",
|
||||||
description="""Le champs CAS qui sera considéré comme l'id unique des
|
description="""Le champ CAS qui sera considéré comme l'id unique des
|
||||||
comptes utilisateurs.""",
|
comptes utilisateurs.""",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ class ScoDocSiteConfig(db.Model):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_int_field(cls, name: str, default=None) -> int:
|
def _get_int_field(cls, name: str, default=None) -> int:
|
||||||
"""Valeur d'un champs integer"""
|
"""Valeur d'un champ integer"""
|
||||||
cfg = ScoDocSiteConfig.query.filter_by(name=name).first()
|
cfg = ScoDocSiteConfig.query.filter_by(name=name).first()
|
||||||
if (cfg is None) or cfg.value is None:
|
if (cfg is None) or cfg.value is None:
|
||||||
return default
|
return default
|
||||||
@ -311,7 +311,7 @@ class ScoDocSiteConfig(db.Model):
|
|||||||
default=None,
|
default=None,
|
||||||
range_values: tuple = (),
|
range_values: tuple = (),
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Set champs integer. True si changement."""
|
"""Set champ integer. True si changement."""
|
||||||
if value != cls._get_int_field(name, default=default):
|
if value != cls._get_int_field(name, default=default):
|
||||||
if not isinstance(value, int) or (
|
if not isinstance(value, int) or (
|
||||||
range_values and (value < range_values[0]) or (value > range_values[1])
|
range_values and (value < range_values[0]) or (value > range_values[1])
|
||||||
|
@ -396,7 +396,7 @@ class TF(object):
|
|||||||
self.values[field] = int(self.values[field])
|
self.values[field] = int(self.values[field])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
msg.append(
|
msg.append(
|
||||||
f"valeur invalide ({self.values[field]}) pour le champs {field}"
|
f"valeur invalide ({self.values[field]}) pour le champ {field}"
|
||||||
)
|
)
|
||||||
ok = False
|
ok = False
|
||||||
elif typ == "float" or typ == "real":
|
elif typ == "float" or typ == "real":
|
||||||
@ -404,7 +404,7 @@ class TF(object):
|
|||||||
self.values[field] = float(self.values[field].replace(",", "."))
|
self.values[field] = float(self.values[field].replace(",", "."))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
msg.append(
|
msg.append(
|
||||||
f"valeur invalide ({self.values[field]}) pour le champs {field}"
|
f"valeur invalide ({self.values[field]}) pour le champ {field}"
|
||||||
)
|
)
|
||||||
ok = False
|
ok = False
|
||||||
if ok:
|
if ok:
|
||||||
|
@ -265,7 +265,7 @@ def DBUpdateArgs(cnx, table, vals, where=None, commit=False, convert_empty_to_nu
|
|||||||
# log('vals=%s\n'%vals)
|
# log('vals=%s\n'%vals)
|
||||||
except psycopg2.errors.StringDataRightTruncation as exc:
|
except psycopg2.errors.StringDataRightTruncation as exc:
|
||||||
cnx.rollback()
|
cnx.rollback()
|
||||||
raise ScoValueError("champs de texte trop long !") from exc
|
raise ScoValueError("champ de texte trop long !") from exc
|
||||||
except:
|
except:
|
||||||
cnx.rollback() # get rid of this transaction
|
cnx.rollback() # get rid of this transaction
|
||||||
log('Exception in DBUpdateArgs:\n\treq="%s"\n\tvals="%s"\n' % (req, vals))
|
log('Exception in DBUpdateArgs:\n\treq="%s"\n\tvals="%s"\n' % (req, vals))
|
||||||
|
@ -166,9 +166,9 @@ def process_field(
|
|||||||
values={pprint.pformat(cdict)}
|
values={pprint.pformat(cdict)}
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
text = f"""<para><i>format invalide: champs</i> {missing_key} <i>inexistant !</i></para>"""
|
text = f"""<para><i>format invalide: champ</i> {missing_key} <i>inexistant !</i></para>"""
|
||||||
scu.flash_once(
|
scu.flash_once(
|
||||||
f"Attention: format PDF invalide (champs {field}, clef {missing_key})"
|
f"Attention: format PDF invalide (champ {field}, clef {missing_key})"
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
except: # pylint: disable=bare-except
|
except: # pylint: disable=bare-except
|
||||||
|
@ -494,7 +494,7 @@ def _normalize_apo_fields(infolist):
|
|||||||
infolist: liste de dict renvoyés par le portail Apogee
|
infolist: liste de dict renvoyés par le portail Apogee
|
||||||
|
|
||||||
recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date)
|
recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date)
|
||||||
ajoute le champs 'paiementinscription_str' : 'ok', 'Non' ou '?'
|
ajoute le champ 'paiementinscription_str' : 'ok', 'Non' ou '?'
|
||||||
ajoute les champs 'etape' (= None) et 'prenom' ('') s'ils ne sont pas présents.
|
ajoute les champs 'etape' (= None) et 'prenom' ('') s'ils ne sont pas présents.
|
||||||
ajoute le champ 'civilite_etat_civil' (=''), et 'prenom_etat_civil' (='') si non présent.
|
ajoute le champ 'civilite_etat_civil' (=''), et 'prenom_etat_civil' (='') si non présent.
|
||||||
"""
|
"""
|
||||||
|
@ -342,13 +342,15 @@ def _build_page(
|
|||||||
"\n".join(options),
|
"\n".join(options),
|
||||||
"""</select>
|
"""</select>
|
||||||
""",
|
""",
|
||||||
""
|
(
|
||||||
if read_only
|
""
|
||||||
else f"""
|
if read_only
|
||||||
|
else f"""
|
||||||
<input type="hidden" name="formsemestre_id" value="{sem['formsemestre_id']}"/>
|
<input type="hidden" name="formsemestre_id" value="{sem['formsemestre_id']}"/>
|
||||||
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
||||||
<a href="#help">aide</a>
|
<a href="#help">aide</a>
|
||||||
""",
|
"""
|
||||||
|
),
|
||||||
sco_inscr_passage.etuds_select_boxes(
|
sco_inscr_passage.etuds_select_boxes(
|
||||||
etuds_by_cat,
|
etuds_by_cat,
|
||||||
sel_inscrits=False,
|
sel_inscrits=False,
|
||||||
@ -356,9 +358,11 @@ def _build_page(
|
|||||||
base_url=base_url,
|
base_url=base_url,
|
||||||
read_only=read_only,
|
read_only=read_only,
|
||||||
),
|
),
|
||||||
""
|
(
|
||||||
if read_only
|
""
|
||||||
else """<p/><input type="submit" name="submitted" value="Appliquer les modifications"/>""",
|
if read_only
|
||||||
|
else """<p/><input type="submit" name="submitted" value="Appliquer les modifications"/>"""
|
||||||
|
),
|
||||||
formsemestre_synchro_etuds_help(sem),
|
formsemestre_synchro_etuds_help(sem),
|
||||||
"""</form>""",
|
"""</form>""",
|
||||||
]
|
]
|
||||||
@ -420,9 +424,9 @@ def list_synch(sem, annee_apogee=None):
|
|||||||
log(f"XXX key2etud etudid={etudid}, type {type(etudid)}")
|
log(f"XXX key2etud etudid={etudid}, type {type(etudid)}")
|
||||||
etud = etuds[0]
|
etud = etuds[0]
|
||||||
etud["inscrit"] = is_inscrit # checkbox state
|
etud["inscrit"] = is_inscrit # checkbox state
|
||||||
etud[
|
etud["datefinalisationinscription"] = (
|
||||||
"datefinalisationinscription"
|
date_finalisation_inscr_by_nip.get(key, None)
|
||||||
] = date_finalisation_inscr_by_nip.get(key, None)
|
)
|
||||||
if key in etudsapo_ident:
|
if key in etudsapo_ident:
|
||||||
etud["etape"] = etudsapo_ident[key].get("etape", "")
|
etud["etape"] = etudsapo_ident[key].get("etape", "")
|
||||||
else:
|
else:
|
||||||
@ -855,7 +859,7 @@ def formsemestre_import_etud_admission(
|
|||||||
if import_email:
|
if import_email:
|
||||||
if not "mail" in data_apo:
|
if not "mail" in data_apo:
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"la réponse portail n'a pas le champs requis 'mail'"
|
"la réponse portail n'a pas le champ requis 'mail'"
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
adresse.email != data_apo["mail"]
|
adresse.email != data_apo["mail"]
|
||||||
|
@ -1018,7 +1018,7 @@ def flash_errors(form):
|
|||||||
"""Flashes form errors (version sommaire)"""
|
"""Flashes form errors (version sommaire)"""
|
||||||
for field, errors in form.errors.items():
|
for field, errors in form.errors.items():
|
||||||
flash(
|
flash(
|
||||||
"Erreur: voir le champs %s" % (getattr(form, field).label.text,),
|
"Erreur: voir le champ %s" % (getattr(form, field).label.text,),
|
||||||
"warning",
|
"warning",
|
||||||
)
|
)
|
||||||
# see https://getbootstrap.com/docs/4.0/components/alerts/
|
# see https://getbootstrap.com/docs/4.0/components/alerts/
|
||||||
|
@ -49,7 +49,7 @@ table#edt2group tbody tr.active-row {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if ScoDocSiteConfig.get("edt_ics_group_field") %}
|
{% if ScoDocSiteConfig.get("edt_ics_group_field") %}
|
||||||
<div>Les groupes sont extrait du champs <b>{{ScoDocSiteConfig.get("edt_ics_group_field")}}</b>
|
<div>Les groupes sont extrait du champ <b>{{ScoDocSiteConfig.get("edt_ics_group_field")}}</b>
|
||||||
à l'aide de l'expression régulière: <tt>{{ScoDocSiteConfig.get("edt_ics_group_regexp")}}</tt>
|
à l'aide de l'expression régulière: <tt>{{ScoDocSiteConfig.get("edt_ics_group_regexp")}}</tt>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
Loading…
Reference in New Issue
Block a user