Merge branch 'table' of https://scodoc.org/git/ScoDoc/ScoDoc into bac_a_sable_prod

This commit is contained in:
ScoDoc service 2023-05-14 15:01:20 +02:00
commit 0c6a21425a
4 changed files with 38 additions and 32 deletions

View File

@ -110,17 +110,19 @@ class UniteEns(db.Model):
# ScoDoc7 output_formators # ScoDoc7 output_formators
e["ue_id"] = self.id e["ue_id"] = self.id
e["numero"] = e["numero"] if e["numero"] else 0 e["numero"] = e["numero"] if e["numero"] else 0
e["ects"] = e["ects"] # legacy
e["ects_by_parcours"] = {}
for up in UEParcours.query.filter_by(ue_id=self.id):
p = ApcParcours.query.get(up.parcours_id)
e["ects_by_parcours"][p.code] = self.get_ects(p)
e["coefficient"] = e["coefficient"] if e["coefficient"] else 0.0 e["coefficient"] = e["coefficient"] if e["coefficient"] else 0.0
e["code_apogee"] = e["code_apogee"] or "" # pas de None e["code_apogee"] = e["code_apogee"] or "" # pas de None
e["parcours"] = [ e["ects_by_parcours"] = {
parcour.to_dict(with_annees=False) for parcour in self.parcours parcour.code: self.get_ects(parcour) for parcour in self.parcours
] }
e["parcours"] = []
for parcour in self.parcours:
p_dict = parcour.to_dict(with_annees=False)
ects = self.get_ects(parcour, only_parcours=True)
if ects is not None:
p_dict["ects"] = ects
e["parcours"].append(p_dict)
if with_module_ue_coefs: if with_module_ue_coefs:
if convert_objects: if convert_objects:
e["module_ue_coefs"] = [ e["module_ue_coefs"] = [

View File

@ -127,11 +127,7 @@ def formation_export_dict(
ue_dict["apc_niveau_libelle"] = ue.niveau_competence.libelle ue_dict["apc_niveau_libelle"] = ue.niveau_competence.libelle
ue_dict["apc_niveau_annee"] = ue.niveau_competence.annee ue_dict["apc_niveau_annee"] = ue.niveau_competence.annee
ue_dict["apc_niveau_ordre"] = ue.niveau_competence.ordre ue_dict["apc_niveau_ordre"] = ue.niveau_competence.ordre
# Et les parcours:
if ue.parcours:
ue_dict["parcours"] = [
parcour.to_dict(with_annees=False) for parcour in ue.parcours
]
# pour les coefficients: # pour les coefficients:
ue_dict["reference"] = ue.id if ue_reference_style == "id" else ue.acronyme ue_dict["reference"] = ue.id if ue_reference_style == "id" else ue.acronyme
if not export_ids: if not export_ids:
@ -367,14 +363,13 @@ def formation_import_xml(doc: str, import_tags=True, use_local_refcomp=False):
assert ue assert ue
if xml_ue_id: if xml_ue_id:
ues_old2new[xml_ue_id] = ue_id ues_old2new[xml_ue_id] = ue_id
# parcours BUT
# TODO XXX
# élément optionnel présent dans les exports BUT: # élément optionnel présent dans les exports BUT:
ue_reference = ue_info[1].get("reference") ue_reference = ue_info[1].get("reference")
if ue_reference: if ue_reference:
ue_reference_to_id[int(ue_reference)] = ue_id ue_reference_to_id[int(ue_reference)] = ue_id
# -- create matieres # -- Create matieres
for mat_info in ue_info[2]: for mat_info in ue_info[2]:
# Backward compat: un seul parcours par UE (ScoDoc < 9.4.71) # Backward compat: un seul parcours par UE (ScoDoc < 9.4.71)
if mat_info[0] == "parcour": if mat_info[0] == "parcour":
@ -392,9 +387,9 @@ def formation_import_xml(doc: str, import_tags=True, use_local_refcomp=False):
log(f"Warning: parcours {code_parcours} inexistant !") log(f"Warning: parcours {code_parcours} inexistant !")
continue continue
elif mat_info[0] == "parcours": elif mat_info[0] == "parcours":
# Parcours (BUT), liste (ScoDoc > 9.4.70) # Parcours (BUT), liste (ScoDoc > 9.4.70), avec ECTS en option
codes_parcours = mat_info[1]["code"] code_parcours = mat_info[1]["code"]
for code_parcours in codes_parcours: ue_parcour_ects = mat_info[1].get("ects")
parcour = ApcParcours.query.filter_by( parcour = ApcParcours.query.filter_by(
code=code_parcours, code=code_parcours,
referentiel_id=referentiel_competence_id, referentiel_id=referentiel_competence_id,
@ -404,6 +399,8 @@ def formation_import_xml(doc: str, import_tags=True, use_local_refcomp=False):
else: else:
flash(f"Attention: parcours {code_parcours} inexistant !") flash(f"Attention: parcours {code_parcours} inexistant !")
log(f"Warning: parcours {code_parcours} inexistant !") log(f"Warning: parcours {code_parcours} inexistant !")
if ue_parcour_ects is not None:
ue.set_ects(ue_parcour_ects, parcour)
db.session.add(ue) db.session.add(ue)
continue continue

View File

@ -85,7 +85,14 @@ def table_modules_ue_coefs(formation_id, semestre_idx=None, parcours_id: int = N
modules = [ modules = [
mod mod
for mod in modules for mod in modules
if (parcours_id in (p.id for p in mod.parcours)) or (mod.parcours is None) if ((parcours_id in (p.id for p in mod.parcours)) or (mod.parcours is None))
and mod.module_type in (scu.ModuleType.RESSOURCE, scu.ModuleType.SAE)
]
else: # ne montre que les ressources et SAE (pas le bonus...)
modules = [
mod
for mod in modules
if mod.module_type in (scu.ModuleType.RESSOURCE, scu.ModuleType.SAE)
] ]
# Titre des modules, en ligne # Titre des modules, en ligne
col_titres_mods = [ col_titres_mods = [
@ -119,8 +126,8 @@ def table_modules_ue_coefs(formation_id, semestre_idx=None, parcours_id: int = N
# met en gris les coefs qui devraient être nuls # met en gris les coefs qui devraient être nuls
# car le module n'est pas dans le parcours de l'UE: # car le module n'est pas dans le parcours de l'UE:
if ( if (
(mod.parcours is not None) mod.parcours
and (ue.parcours) and ue.parcours
and not {p.id for p in ue.parcours}.intersection(mod_parcours_ids) and not {p.id for p in ue.parcours}.intersection(mod_parcours_ids)
): ):
cell_style = style + " champs_coef_hors_parcours" cell_style = style + " champs_coef_hors_parcours"