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