Update opolka/ScoDoc from ScoDoc/ScoDoc #2

Merged
opolka merged 1272 commits from ScoDoc/ScoDoc:master into master 2024-05-27 09:11:04 +02:00
3 changed files with 24 additions and 12 deletions
Showing only changes of commit 034800ab9a - Show all commits

View File

@ -445,10 +445,11 @@ class Identite(models.ScoDocModel):
"prenom_etat_civil": self.prenom_etat_civil, "prenom_etat_civil": self.prenom_etat_civil,
} }
def to_dict_scodoc7(self, restrict=False) -> dict: def to_dict_scodoc7(self, restrict=False, with_inscriptions=False) -> dict:
"""Représentation dictionnaire, """Représentation dictionnaire,
compatible ScoDoc7 mais sans infos admission. compatible ScoDoc7 mais sans infos admission.
Si restrict, cache les infos "personnelles" si pas permission ViewEtudData Si restrict, cache les infos "personnelles" si pas permission ViewEtudData
Si with_inscriptions, inclut les champs "inscription"
""" """
e_dict = self.__dict__.copy() # dict(self.__dict__) e_dict = self.__dict__.copy() # dict(self.__dict__)
e_dict.pop("_sa_instance_state", None) e_dict.pop("_sa_instance_state", None)
@ -460,6 +461,8 @@ class Identite(models.ScoDocModel):
adresse = self.adresses.first() adresse = self.adresses.first()
if adresse: if adresse:
e_dict.update(adresse.to_dict(restrict=restrict)) e_dict.update(adresse.to_dict(restrict=restrict))
if with_inscriptions:
e_dict.update(self.inscription_descr())
return {k: v or "" for k, v in e_dict.items()} # convert_null_outputs_to_empty return {k: v or "" for k, v in e_dict.items()} # convert_null_outputs_to_empty
def to_dict_bul(self, include_urls=True): def to_dict_bul(self, include_urls=True):
@ -574,7 +577,9 @@ class Identite(models.ScoDocModel):
return r[0] if r else None return r[0] if r else None
def inscription_descr(self) -> dict: def inscription_descr(self) -> dict:
"""Description de l'état d'inscription""" """Description de l'état d'inscription
avec champs compatibles templates ScoDoc7
"""
inscription_courante = self.inscription_courante() inscription_courante = self.inscription_courante()
if inscription_courante: if inscription_courante:
titre_sem = inscription_courante.formsemestre.titre_mois() titre_sem = inscription_courante.formsemestre.titre_mois()
@ -585,7 +590,7 @@ class Identite(models.ScoDocModel):
else: else:
inscr_txt = "Inscrit en" inscr_txt = "Inscrit en"
return { result = {
"etat_in_cursem": inscription_courante.etat, "etat_in_cursem": inscription_courante.etat,
"inscription_courante": inscription_courante, "inscription_courante": inscription_courante,
"inscription": titre_sem, "inscription": titre_sem,
@ -608,15 +613,20 @@ class Identite(models.ScoDocModel):
inscription = "ancien" inscription = "ancien"
situation = "ancien élève" situation = "ancien élève"
else: else:
inscription = ("non inscrit",) inscription = "non inscrit"
situation = inscription situation = inscription
return { result = {
"etat_in_cursem": "?", "etat_in_cursem": "?",
"inscription_courante": None, "inscription_courante": None,
"inscription": inscription, "inscription": inscription,
"inscription_str": inscription, "inscription_str": inscription,
"situation": situation, "situation": situation,
} }
# aliases pour compat templates ScoDoc7
result["etatincursem"] = result["etat_in_cursem"]
result["inscriptionstr"] = result["inscription_str"]
return result
def inscription_etat(self, formsemestre_id: int) -> str: def inscription_etat(self, formsemestre_id: int) -> str:
"""État de l'inscription de cet étudiant au semestre: """État de l'inscription de cet étudiant au semestre:
@ -742,7 +752,6 @@ def check_etud_duplicate_code(args, code_name, edit=True):
Raises ScoGenError si problème. Raises ScoGenError si problème.
""" """
etudid = args.get("etudid", None) etudid = args.get("etudid", None)
assert (not edit) or (etudid is not None) # si edit, etudid doit être spécifié
if not args.get(code_name, None): if not args.get(code_name, None):
return return
etuds = Identite.query.filter_by( etuds = Identite.query.filter_by(

View File

@ -271,7 +271,9 @@ def abs_notification_message(
etud = Identite.get_etud(etudid) etud = Identite.get_etud(etudid)
# Variables accessibles dans les balises du template: %(nom_variable)s : # Variables accessibles dans les balises du template: %(nom_variable)s :
values = sco_bulletins.make_context_dict(formsemestre, etud) values = sco_bulletins.make_context_dict(
formsemestre, etud.to_dict_scodoc7(with_inscriptions=True)
)
values["nbabs"] = nbabs values["nbabs"] = nbabs
values["nbabsjust"] = nbabsjust values["nbabsjust"] = nbabsjust

View File

@ -735,17 +735,18 @@ def fill_etuds_info(etuds: list[dict], add_admission=True):
etud["nomlycee"] = etud.get("nomlycee", "") or "" etud["nomlycee"] = etud.get("nomlycee", "") or ""
# voir Identite.inscription_descr et Identite.to_dict_scodoc7(with_inscriptions=True)
def etud_inscriptions_infos(etudid: int, ne="") -> dict: def etud_inscriptions_infos(etudid: int, ne="") -> dict:
"""Dict avec les informations sur les semestres passés et courant. """Dict avec les informations sur les semestres passés et courant.
{ {
"sems" : , # trie les semestres par date de debut, le plus recent d'abord "sems" : , # trie les semestres par date de debut, le plus recent d'abord
"ins" : , "ins" : ,
"cursem" : , "cursem" : ,
"inscription" : , "inscription" : , # cursem["titremois"]
"inscriptionstr" : , "inscriptionstr" : , # "Inscrit en " + cursem["titremois"]
"inscription_formsemestre_id" : , "inscription_formsemestre_id" : , # cursem["formsemestre_id"]
"etatincursem" : , "etatincursem" : , # curi["etat"]
"situation" : , "situation" : , # descr_situation_etud(etudid, ne)
} }
""" """
from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre