From cc290487d4ea39d6aef12167b4461f7624d4aea1 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Tue, 22 Apr 2025 23:17:52 +0200 Subject: [PATCH] Fix: sco_report when no admission data. --- app/decorators.py | 6 +++--- app/models/etudiants.py | 3 +++ app/scodoc/sco_report.py | 5 +++-- app/scodoc/sco_synchro_etuds.py | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/decorators.py b/app/decorators.py index f84ca85a..5c853c11 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 573f3f2b..b0e2ae47 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 ab38f6d3..c7e171cc 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 fef8b33b..08896943 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) -- GitLab