diff --git a/app/decorators.py b/app/decorators.py index f84ca85a69617b9e0764382bc683fe1df0af15ed..5c853c118c4926189c311e8f5b51dec3d72926f0 100644 --- a/app/decorators.py +++ b/app/decorators.py @@ -1,6 +1,5 @@ # -*- coding: UTF-8 -* -"""Decorators for permissions, roles and ScoDoc7 Zope compatibility -""" +"""Decorators for permissions, roles and ScoDoc7 Zope compatibility""" from functools import wraps import inspect @@ -19,7 +18,7 @@ import app.scodoc.sco_utils as scu from app.scodoc.sco_exceptions import ScoValueError -class ZUser(object): +class ZUser: "Emulating Zope User" def __init__(self): @@ -146,6 +145,7 @@ def permission_required_compat_scodoc7(permission): # XXX TODO A SUPPRIMER def admin_required(f): + "requiert la permission SuperAdmin" from app.auth.models import Permission return permission_required(Permission.ScoSuperAdmin)(f) diff --git a/app/models/etudiants.py b/app/models/etudiants.py index 573f3f2ba0ef0ac80ec09daaf373fff64d6e65b1..b0e2ae4779bb2d452999a9254110d2ee50a3283e 100644 --- a/app/models/etudiants.py +++ b/app/models/etudiants.py @@ -295,6 +295,9 @@ class Identite(models.ScoDocModel): """ check_etud_duplicate_code(args, "code_nip", etudid=self.id) check_etud_duplicate_code(args, "code_ine", etudid=self.id) + if self.admission is None: + self.admission = Admission() + db.session.add(self.admission) modified = super().from_dict(args, **kwargs) if modified: msg = f"""Modification de l'étudiant {self.html_link_fiche()} id={self.id} nip={ diff --git a/app/scodoc/sco_report.py b/app/scodoc/sco_report.py index ab38f6d3e357e885e33ffad43152b3067ff797df..c7e171ccdd2f2f8d2a1a6abe49a46c68a5c7e882 100644 --- a/app/scodoc/sco_report.py +++ b/app/scodoc/sco_report.py @@ -92,8 +92,9 @@ def formsemestre_etuds_stats( continue etud = Identite.get_etud(etudid) e_dict = etud.to_dict_scodoc7() - e_dict |= etud.admission.to_dict() - e_dict["annee_admission"] = etud.admission.annee # plus explicite + if etud.admission: + e_dict |= etud.admission.to_dict() + e_dict["annee_admission"] = etud.admission.annee # plus explicite decision = nt.get_etud_decision_sem(etudid) if decision: e_dict["codedecision"] = decision["code"] diff --git a/app/scodoc/sco_synchro_etuds.py b/app/scodoc/sco_synchro_etuds.py index fef8b33ba00043ed652c4f553cdb70dc515d6dcf..08896943a283316bfc64598b469ddbcc7d01ef46 100644 --- a/app/scodoc/sco_synchro_etuds.py +++ b/app/scodoc/sco_synchro_etuds.py @@ -779,6 +779,7 @@ def do_import_etud_admission(etud: Identite, etud_data: dict, import_identite=Fa } if etud.admission is None: etud.admission = Admission() + db.session.add(etud.admission) args = {k: v for k, v in args.items() if v not in ("", None)} etud.admission.from_dict(args)