From d55e393c15b7ab7292e766bd46f838d0d5fe716b Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sun, 12 Feb 2023 13:36:47 +0100 Subject: [PATCH] Renommage dans UI et code des anciens 'Parcours' ScoDoc en 'Cursus' --- app/but/apc_edit_ue.py | 4 +- app/but/bulletin_but.py | 6 +- app/but/bulletin_but_pdf.py | 2 +- app/but/bulletin_but_xml_compat.py | 4 +- app/but/cursus_but.py | 4 +- app/but/jury_but.py | 12 +- app/but/jury_but_view.py | 4 +- app/comp/bonus_spo.py | 10 +- app/comp/jury.py | 4 +- app/comp/moy_mat.py | 2 +- app/comp/moy_mod.py | 2 +- app/comp/moy_ue.py | 11 +- app/comp/res_but.py | 2 +- app/comp/res_classic.py | 2 +- app/comp/res_common.py | 2 +- app/comp/res_compat.py | 4 +- app/forms/main/config_apo.py | 4 +- app/models/but_validations.py | 2 +- app/models/config.py | 2 +- app/models/formations.py | 14 +- app/models/formsemestre.py | 14 +- app/models/moduleimpls.py | 2 +- app/models/modules.py | 2 +- app/pe/pe_jurype.py | 14 +- app/pe/pe_semestretag.py | 4 +- ...{sco_codes_parcours.py => codes_cursus.py} | 217 +++++++++--------- app/scodoc/dutrules.py | 2 +- app/scodoc/notes_table.py | 8 +- app/scodoc/sco_apogee_csv.py | 4 +- app/scodoc/sco_bulletins.py | 18 +- app/scodoc/sco_bulletins_pdf.py | 4 +- app/scodoc/sco_bulletins_standard.py | 2 +- app/scodoc/sco_bulletins_xml.py | 4 +- app/scodoc/sco_config.py | 2 +- app/scodoc/sco_cursus_dut.py | 4 +- app/scodoc/sco_edit_apc.py | 8 +- app/scodoc/sco_edit_formation.py | 8 +- app/scodoc/sco_edit_module.py | 8 +- app/scodoc/sco_edit_ue.py | 36 +-- app/scodoc/sco_export_results.py | 18 +- app/scodoc/sco_formations.py | 4 +- app/scodoc/sco_formsemestre.py | 6 +- app/scodoc/sco_formsemestre_edit.py | 6 +- app/scodoc/sco_formsemestre_exterieurs.py | 2 +- app/scodoc/sco_formsemestre_inscriptions.py | 2 +- app/scodoc/sco_formsemestre_status.py | 18 +- app/scodoc/sco_formsemestre_validation.py | 24 +- app/scodoc/sco_groups.py | 4 +- app/scodoc/sco_groups_view.py | 6 +- app/scodoc/sco_inscr_passage.py | 6 +- app/scodoc/sco_liste_notes.py | 2 +- app/scodoc/sco_moduleimpl_inscriptions.py | 6 +- app/scodoc/sco_moduleimpl_status.py | 2 +- app/scodoc/sco_page_etud.py | 10 +- app/scodoc/sco_poursuite_dut.py | 2 +- app/scodoc/sco_prepajury.py | 8 +- app/scodoc/sco_pvjury.py | 18 +- app/scodoc/sco_pvpdf.py | 6 +- app/scodoc/sco_report.py | 71 +++--- app/scodoc/sco_report_but.py | 4 +- app/scodoc/sco_ue_external.py | 10 +- app/scodoc/sco_utils.py | 2 +- app/tables/jury_recap.py | 2 +- app/tables/recap.py | 10 +- app/templates/formsemestre_header.j2 | 2 +- app/templates/formsemestre_page_title.j2 | 59 ++--- app/templates/pn/form_mods.j2 | 2 +- app/views/notes.py | 8 +- app/views/pn_modules.py | 4 +- app/views/scolar.py | 6 +- misc/csv2rules.py | 2 +- tests/unit/sco_fake_gen.py | 8 +- tests/unit/setup.py | 10 +- tests/unit/test_but_ues.py | 2 +- tests/unit/test_sco_basic.py | 6 +- tools/scodoc_config.py | 2 +- tools/scodoc_config_tmpl.py | 2 +- 77 files changed, 402 insertions(+), 418 deletions(-) rename app/scodoc/{sco_codes_parcours.py => codes_cursus.py} (83%) diff --git a/app/but/apc_edit_ue.py b/app/but/apc_edit_ue.py index 01b1aacd..bd8bb1b3 100644 --- a/app/but/apc_edit_ue.py +++ b/app/but/apc_edit_ue.py @@ -9,14 +9,14 @@ Edition associations UE <-> Ref. Compétence """ from flask import g, url_for from app.models import ApcReferentielCompetences, Formation, UniteEns -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus def form_ue_choix_niveau(ue: UniteEns) -> str: """Form. HTML pour associer une UE à un niveau de compétence. Le menu select lui meême est vide et rempli en JS par appel à get_ue_niveaux_options_html """ - if ue.type != sco_codes_parcours.UE_STANDARD: + if ue.type != codes_cursus.UE_STANDARD: return "" ref_comp = ue.formation.referentiel_competence if ref_comp is None: diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index d8dbd61c..4af56a3c 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -19,10 +19,10 @@ from app.models.ues import UniteEns from app.scodoc import sco_bulletins, sco_utils as scu from app.scodoc import sco_bulletins_json from app.scodoc import sco_bulletins_pdf -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_groups from app.scodoc import sco_preferences -from app.scodoc.sco_codes_parcours import UE_SPORT, DEF +from app.scodoc.codes_cursus import UE_SPORT, DEF from app.scodoc.sco_utils import fmt_note @@ -157,7 +157,7 @@ class BulletinBUT: for _, ue_capitalisee in self.res.validations.ue_capitalisees.loc[ [etud.id] ].iterrows(): - if sco_codes_parcours.code_ue_validant(ue_capitalisee.code): + if codes_cursus.code_ue_validant(ue_capitalisee.code): ue = UniteEns.query.get(ue_capitalisee.ue_id) # XXX cacher ? # déjà capitalisé ? montre la meilleure if ue.acronyme in d: diff --git a/app/but/bulletin_but_pdf.py b/app/but/bulletin_but_pdf.py index 1ba7a760..0916e6cb 100644 --- a/app/but/bulletin_but_pdf.py +++ b/app/but/bulletin_but_pdf.py @@ -12,7 +12,7 @@ from reportlab.platypus import Paragraph, Spacer from app.scodoc.sco_bulletins_standard import BulletinGeneratorStandard from app.scodoc import gen_tables -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc import sco_utils as scu diff --git a/app/but/bulletin_but_xml_compat.py b/app/but/bulletin_but_xml_compat.py index 00564f14..98dc9741 100644 --- a/app/but/bulletin_but_xml_compat.py +++ b/app/but/bulletin_but_xml_compat.py @@ -43,7 +43,7 @@ from app.but import bulletin_but from app.models import FormSemestre, Identite import app.scodoc.sco_utils as scu import app.scodoc.notesdb as ndb -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_ue from app.scodoc import sco_etud from app.scodoc import sco_photos @@ -159,7 +159,7 @@ def bulletin_but_xml_compat( code_apogee=quote_xml_attr(ue.code_apogee or ""), ) doc.append(x_ue) - if ue.type != sco_codes_parcours.UE_SPORT: + if ue.type != codes_cursus.UE_SPORT: v = results.etud_moy_ue[ue.id][etud.id] vmin = results.etud_moy_ue[ue.id].min() vmax = results.etud_moy_ue[ue.id].max() diff --git a/app/but/cursus_but.py b/app/but/cursus_but.py index bfa97a70..3ded0c1d 100644 --- a/app/but/cursus_but.py +++ b/app/but/cursus_but.py @@ -44,8 +44,8 @@ from app.models.formations import Formation from app.models.formsemestre import FormSemestre, FormSemestreInscription from app.models.ues import UniteEns from app.models.validations import ScolarFormSemestreValidation -from app.scodoc import sco_codes_parcours as sco_codes -from app.scodoc.sco_codes_parcours import RED, UE_STANDARD +from app.scodoc import codes_cursus as sco_codes +from app.scodoc.codes_cursus import RED, UE_STANDARD from app.scodoc import sco_utils as scu from app.scodoc.sco_exceptions import ScoNoReferentielCompetences, ScoValueError diff --git a/app/but/jury_but.py b/app/but/jury_but.py index 821f564b..e4bf39aa 100644 --- a/app/but/jury_but.py +++ b/app/but/jury_but.py @@ -90,8 +90,8 @@ from app.models.formsemestre import FormSemestre, FormSemestreInscription from app.models.ues import UniteEns from app.models.validations import ScolarFormSemestreValidation from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours as sco_codes -from app.scodoc.sco_codes_parcours import ( +from app.scodoc import codes_cursus as sco_codes +from app.scodoc.codes_cursus import ( BUT_CODES_ORDERED, CODES_RCUE_VALIDES, CODES_UE_CAPITALISANTS, @@ -641,7 +641,7 @@ class DecisionsProposeesAnnee(DecisionsProposees): ids = set() # La poursuite d'études dans un semestre pair d’une même année # est de droit pour tout étudiant: - if (self.formsemestre.semestre_id % 2) and sco_codes.ParcoursBUT.NB_SEM: + if (self.formsemestre.semestre_id % 2) and sco_codes.CursusBUT.NB_SEM: ids.add(self.formsemestre.semestre_id + 1) # La poursuite d’études dans un semestre impair est possible si @@ -656,7 +656,7 @@ class DecisionsProposeesAnnee(DecisionsProposees): if ( self.jury_annuel and code in sco_codes.BUT_CODES_PASSAGE - and self.formsemestre_pair.semestre_id < sco_codes.ParcoursBUT.NB_SEM + and self.formsemestre_pair.semestre_id < sco_codes.CursusBUT.NB_SEM ): ids.add(self.formsemestre.semestre_id + 1) @@ -1250,10 +1250,10 @@ class DecisionsProposeesUE(DecisionsProposees): if self.inscription_etat != scu.INSCRIT: return if ( - self.moy_ue > (sco_codes.ParcoursBUT.BARRE_MOY - sco_codes.NOTES_TOLERANCE) + self.moy_ue > (sco_codes.CursusBUT.BARRE_MOY - sco_codes.NOTES_TOLERANCE) ) or self.formsemestre.modalite == "EXT": self.codes.insert(0, sco_codes.ADM) - self.explanation = f"Moyenne >= {sco_codes.ParcoursBUT.BARRE_MOY}/20" + self.explanation = f"Moyenne >= {sco_codes.CursusBUT.BARRE_MOY}/20" elif self.rcue and self.rcue.est_compensable(): self.codes.insert(0, sco_codes.CMP) self.explanation = "compensable dans le RCUE" diff --git a/app/but/jury_but_view.py b/app/but/jury_but_view.py index 15934474..4a4f974a 100644 --- a/app/but/jury_but_view.py +++ b/app/but/jury_but_view.py @@ -291,7 +291,7 @@ def jury_but_semestriel( parcour, ues = jury_but.list_ue_parcour_etud(formsemestre, etud, res) inscription_etat = etud.inscription_etat(formsemestre.id) semestre_terminal = ( - formsemestre.semestre_id >= formsemestre.formation.get_parcours().NB_SEM + formsemestre.semestre_id >= formsemestre.formation.get_cursus().NB_SEM ) autorisations_passage = ScolarAutorisationInscription.query.filter_by( etudid=etud.id, @@ -474,7 +474,7 @@ def jury_but_semestriel( """ ) else: - if formsemestre.semestre_id < formsemestre.formation.get_parcours().NB_SEM: + if formsemestre.semestre_id < formsemestre.formation.get_cursus().NB_SEM: H.append( f"""
diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py index ba971dcc..cd74b815 100644 --- a/app/comp/bonus_spo.py +++ b/app/comp/bonus_spo.py @@ -18,8 +18,8 @@ import pandas as pd from flask import g -from app.scodoc.sco_codes_parcours import UE_SPORT -from app.scodoc.sco_codes_parcours import ParcoursDUT, ParcoursDUTMono +from app.scodoc.codes_cursus import UE_SPORT +from app.scodoc.codes_cursus import CursusDUT, CursusDUTMono from app.scodoc.sco_utils import ModuleType @@ -677,11 +677,11 @@ class BonusCalais(BonusSportAdditif): proportion_point = 0.06 # 6% def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan): - parcours = self.formsemestre.formation.get_parcours() + parcours = self.formsemestre.formation.get_cursus() # Variantes de DUT ? if ( - isinstance(parcours, ParcoursDUT) - or parcours.TYPE_PARCOURS == ParcoursDUTMono.TYPE_PARCOURS + isinstance(parcours, CursusDUT) + or parcours.TYPE_CURSUS == CursusDUTMono.TYPE_CURSUS ): # DUT super().compute_bonus(sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan) else: diff --git a/app/comp/jury.py b/app/comp/jury.py index 226d5a4f..f54cd0bb 100644 --- a/app/comp/jury.py +++ b/app/comp/jury.py @@ -12,7 +12,7 @@ from app import db from app.models import FormSemestre, Identite, ScolarFormSemestreValidation, UniteEns from app.comp.res_cache import ResultatsCache from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus class ValidationsSemestre(ResultatsCache): @@ -89,7 +89,7 @@ class ValidationsSemestre(ResultatsCache): if decision.etudid not in decisions_jury_ues: decisions_jury_ues[decision.etudid] = {} # Calcul des ECTS associés à cette UE: - if sco_codes_parcours.code_ue_validant(decision.code) and decision.ue: + if codes_cursus.code_ue_validant(decision.code) and decision.ue: ects = decision.ue.ects or 0.0 # 0 if None else: ects = 0.0 diff --git a/app/comp/moy_mat.py b/app/comp/moy_mat.py index a0120f66..09518857 100644 --- a/app/comp/moy_mat.py +++ b/app/comp/moy_mat.py @@ -14,7 +14,7 @@ import pandas as pd from app.comp import moy_ue from app.models.formsemestre import FormSemestre -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_utils import ModuleType diff --git a/app/comp/moy_mod.py b/app/comp/moy_mod.py index 5856184f..a8f734b9 100644 --- a/app/comp/moy_mod.py +++ b/app/comp/moy_mod.py @@ -44,7 +44,7 @@ from app import db from app.models import Evaluation, EvaluationUEPoids, ModuleImpl from app.scodoc import sco_cache from app.scodoc import sco_utils as scu -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_exceptions import ScoBugCatcher from app.scodoc.sco_utils import ModuleType diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py index c533c21a..bf158669 100644 --- a/app/comp/moy_ue.py +++ b/app/comp/moy_ue.py @@ -40,9 +40,9 @@ from app.models import ( UniteEns, ) from app.comp import moy_mod -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_preferences -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_utils import ModuleType @@ -61,7 +61,7 @@ def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.Data """ ues = ( UniteEns.query.filter_by(formation_id=formation_id) - .filter(UniteEns.type != sco_codes_parcours.UE_SPORT) + .filter(UniteEns.type != codes_cursus.UE_SPORT) .order_by(UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme) ) modules = ( @@ -69,10 +69,7 @@ def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.Data .filter( (Module.module_type == ModuleType.RESSOURCE) | (Module.module_type == ModuleType.SAE) - | ( - (Module.ue_id == UniteEns.id) - & (UniteEns.type == sco_codes_parcours.UE_SPORT) - ) + | ((Module.ue_id == UniteEns.id) & (UniteEns.type == codes_cursus.UE_SPORT)) ) .order_by(Module.semestre_id, Module.module_type, Module.numero, Module.code) ) diff --git a/app/comp/res_but.py b/app/comp/res_but.py index 831c0104..9e3af6f7 100644 --- a/app/comp/res_but.py +++ b/app/comp/res_but.py @@ -18,7 +18,7 @@ from app.models import ScoDocSiteConfig from app.models.moduleimpls import ModuleImpl from app.models.ues import DispenseUE, UniteEns from app.scodoc import sco_preferences -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_utils import ModuleType diff --git a/app/comp/res_classic.py b/app/comp/res_classic.py index 077c745c..27ec5cc3 100644 --- a/app/comp/res_classic.py +++ b/app/comp/res_classic.py @@ -22,7 +22,7 @@ from app.models import ScoDocSiteConfig from app.models.etudiants import Identite from app.models.formsemestre import FormSemestre from app.models.ues import UniteEns -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_exceptions import ScoValueError from app.scodoc import sco_preferences from app.scodoc.sco_utils import ModuleType diff --git a/app/comp/res_common.py b/app/comp/res_common.py index f29b336c..d1cc2d56 100644 --- a/app/comp/res_common.py +++ b/app/comp/res_common.py @@ -25,7 +25,7 @@ from app.models import ModuleImpl, ModuleImplInscription from app.models import ScolarAutorisationInscription from app.models.ues import UniteEns from app.scodoc.sco_cache import ResultatsSemestreCache -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_exceptions import ScoValueError from app.scodoc import sco_utils as scu diff --git a/app/comp/res_compat.py b/app/comp/res_compat.py index 6c48ae2c..e973a7a6 100644 --- a/app/comp/res_compat.py +++ b/app/comp/res_compat.py @@ -17,7 +17,7 @@ from app.comp.res_common import ResultatsSemestre from app.models import FormSemestre from app.models import Identite from app.models import ModuleImpl -from app.scodoc.sco_codes_parcours import UE_SPORT, DEF +from app.scodoc.codes_cursus import UE_SPORT, DEF from app.scodoc import sco_utils as scu # Pour raccorder le code des anciens codes qui attendent une NoteTable @@ -52,7 +52,7 @@ class NotesTableCompat(ResultatsSemestre): self.moy_gen_rangs_by_group = {} # { group_id : (Series, Series) } self.ue_rangs_by_group = {} # { ue_id : {group_id : (Series, Series)}} self.expr_diagnostics = "" - self.parcours = self.formsemestre.formation.get_parcours() + self.parcours = self.formsemestre.formation.get_cursus() self._modimpls_dict_by_ue = {} # local cache def get_inscrits(self, include_demdef=True, order_by=False) -> list[Identite]: diff --git a/app/forms/main/config_apo.py b/app/forms/main/config_apo.py index 34e04d8e..b65d6407 100644 --- a/app/forms/main/config_apo.py +++ b/app/forms/main/config_apo.py @@ -35,14 +35,14 @@ from wtforms.fields.simple import StringField from app.models import SHORT_STR_LEN -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus def _build_code_field(code): return StringField( label=code, default=code, - description=sco_codes_parcours.CODES_EXPL[code], + description=codes_cursus.CODES_EXPL[code], validators=[ validators.regexp( r"^[A-Z0-9_]*$", diff --git a/app/models/but_validations.py b/app/models/but_validations.py index 9625d1e4..c5707c0b 100644 --- a/app/models/but_validations.py +++ b/app/models/but_validations.py @@ -13,7 +13,7 @@ from app.models.etudiants import Identite from app.models.formations import Formation from app.models.formsemestre import FormSemestre from app.models.ues import UniteEns -from app.scodoc import sco_codes_parcours as sco_codes +from app.scodoc import codes_cursus as sco_codes from app.scodoc import sco_utils as scu diff --git a/app/models/config.py b/app/models/config.py index 6872c6cd..f4f09cc3 100644 --- a/app/models/config.py +++ b/app/models/config.py @@ -8,7 +8,7 @@ from app import db, log from app.comp import bonus_spo from app.scodoc import sco_utils as scu -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import ( ABAN, ABL, ADC, diff --git a/app/models/formations.py b/app/models/formations.py index 8264fa81..1f2747e0 100644 --- a/app/models/formations.py +++ b/app/models/formations.py @@ -17,9 +17,9 @@ from app.models.modules import Module from app.models.moduleimpls import ModuleImpl from app.models.ues import UniteEns from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_utils as scu -from app.scodoc.sco_codes_parcours import UE_STANDARD +from app.scodoc.codes_cursus import UE_STANDARD class Formation(db.Model): @@ -80,12 +80,12 @@ class Formation(db.Model): return e - def get_parcours(self): - """get l'instance de TypeParcours de cette formation - (le TypeParcours définit le genre de formation, à ne pas confondre + def get_cursus(self) -> codes_cursus.TypeCursus: + """get l'instance de TypeCursus de cette formation + (le TypeCursus définit le genre de formation, à ne pas confondre avec les parcours du BUT). """ - return sco_codes_parcours.get_parcours_from_code(self.type_parcours) + return codes_cursus.get_cursus_from_code(self.type_parcours) def get_titre_version(self) -> str: """Titre avec version""" @@ -93,7 +93,7 @@ class Formation(db.Model): def is_apc(self): "True si formation APC avec SAE (BUT)" - return self.get_parcours().APC_SAE + return self.get_cursus().APC_SAE def get_module_coefs(self, semestre_idx: int = None): """Les coefs des modules vers les UE (accès via cache)""" diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 57e5b92f..abcc0592 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -39,7 +39,7 @@ from app.models.moduleimpls import ModuleImpl, ModuleImplInscription from app.models.modules import Module from app.models.ues import UniteEns from app.models.validations import ScolarFormSemestreValidation -from app.scodoc import sco_codes_parcours, sco_preferences +from app.scodoc import codes_cursus, sco_preferences from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.sco_permissions import Permission from app.scodoc.sco_utils import MONTH_NAMES_ABBREV @@ -276,7 +276,7 @@ class FormSemestre(db.Model): - sont associées à l'un des parcours de ce formsemestre (ou à aucun) """ - if self.formation.get_parcours().APC_SAE: + if self.formation.get_cursus().APC_SAE: sem_ues = UniteEns.query.filter_by( formation=self.formation, semestre_idx=self.semestre_id ) @@ -294,7 +294,7 @@ class FormSemestre(db.Model): UniteEns.id == Module.ue_id, ) if not with_sport: - sem_ues = sem_ues.filter(UniteEns.type != sco_codes_parcours.UE_SPORT) + sem_ues = sem_ues.filter(UniteEns.type != codes_cursus.UE_SPORT) return sem_ues.order_by(UniteEns.numero) def query_ues_parcours_etud(self, etudid: int) -> flask_sqlalchemy.BaseQuery: @@ -598,7 +598,7 @@ class FormSemestre(db.Model): if not imputation_dept: imputation_dept = prefs["DeptName"] imputation_dept = imputation_dept.upper() - parcours_name = self.formation.get_parcours().NAME + cursus_name = self.formation.get_cursus().NAME modalite = self.modalite # exception pour code Apprentissage: modalite = (modalite or "").replace("FAP", "FA").replace("APP", "FA") @@ -611,7 +611,7 @@ class FormSemestre(db.Model): scu.annee_scolaire_debut(self.date_debut.year, self.date_debut.month) ) return scu.sanitize_string( - f"{imputation_dept}-{parcours_name}-{modalite}-{semestre_id}-{annee_sco}" + f"{imputation_dept}-{cursus_name}-{modalite}-{semestre_id}-{annee_sco}" ) def titre_annee(self) -> str: @@ -643,9 +643,9 @@ class FormSemestre(db.Model): def titre_num(self) -> str: """Le titre et le semestre, ex ""DUT Informatique semestre 2"" """ - if self.semestre_id == sco_codes_parcours.NO_SEMESTRE_ID: + if self.semestre_id == codes_cursus.NO_SEMESTRE_ID: return self.titre - return f"{self.titre} {self.formation.get_parcours().SESSION_NAME} {self.semestre_id}" + return f"{self.titre} {self.formation.get_cursus().SESSION_NAME} {self.semestre_id}" def sem_modalite(self) -> str: """Le semestre et la modalité, ex "S2 FI" ou "S3 APP" """ diff --git a/app/models/moduleimpls.py b/app/models/moduleimpls.py index 42da823f..0c20d841 100644 --- a/app/models/moduleimpls.py +++ b/app/models/moduleimpls.py @@ -66,7 +66,7 @@ class ModuleImpl(db.Model): """true si les poids des évaluations du module permettent de satisfaire les coefficients du PN. """ - if not self.module.formation.get_parcours().APC_SAE or ( + if not self.module.formation.get_cursus().APC_SAE or ( self.module.module_type != scu.ModuleType.RESSOURCE and self.module.module_type != scu.ModuleType.SAE ): diff --git a/app/models/modules.py b/app/models/modules.py index c0bb84ac..e3610148 100644 --- a/app/models/modules.py +++ b/app/models/modules.py @@ -5,7 +5,7 @@ from app import db from app.models import APO_CODE_STR_LEN from app.models.but_refcomp import ApcParcours, app_critiques_modules, parcours_modules from app.scodoc import sco_utils as scu -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.sco_utils import ModuleType diff --git a/app/pe/pe_jurype.py b/app/pe/pe_jurype.py index 50202752..5c85c253 100644 --- a/app/pe/pe_jurype.py +++ b/app/pe/pe_jurype.py @@ -52,7 +52,7 @@ from app.models import FormSemestre from app.scodoc.gen_tables import GenTable, SeqGenTable import app.scodoc.sco_utils as scu -from app.scodoc import sco_codes_parcours # sco_codes_parcours.NEXT -> sem suivant +from app.scodoc import codes_cursus # codes_cursus.NEXT -> sem suivant from app.scodoc import sco_etud from app.scodoc import sco_formsemestre from app.pe import pe_tagtable @@ -68,7 +68,7 @@ def comp_nom_semestre_dans_parcours(sem): from app.scodoc import sco_formations F = sco_formations.formation_list(args={"formation_id": sem["formation_id"]})[0] - parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"]) + parcours = codes_cursus.get_cursus_from_code(F["type_parcours"]) return "%s %s %s %s" % ( parcours.SESSION_NAME, # eg "semestre" sem["semestre_id"], # eg 2 @@ -457,9 +457,9 @@ class JuryPE(object): reponse = False etud = self.get_cache_etudInfo_d_un_etudiant(etudid) - (_, parcours) = sco_report.get_codeparcoursetud(etud) + (_, parcours) = sco_report.get_code_cursus_etud(etud) if ( - len(sco_codes_parcours.CODES_SEM_REO & set(parcours.values())) > 0 + len(codes_cursus.CODES_SEM_REO & set(parcours.values())) > 0 ): # Eliminé car NAR apparait dans le parcours reponse = True if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 2: @@ -528,14 +528,14 @@ class JuryPE(object): from app.scodoc import sco_report etud = self.get_cache_etudInfo_d_un_etudiant(etudid) - (code, parcours) = sco_report.get_codeparcoursetud( + (code, parcours) = sco_report.get_code_cursus_etud( etud ) # description = '1234:A', parcours = {1:ADM, 2:NAR, ...} sonDernierSemestreValide = max( [ int(cle) for (cle, code) in parcours.items() - if code in sco_codes_parcours.CODES_SEM_VALIDES + if code in codes_cursus.CODES_SEM_VALIDES ] + [0] ) # n° du dernier semestre valide, 0 sinon @@ -562,7 +562,7 @@ class JuryPE(object): dec = nt.get_etud_decision_sem( etudid ) # quelle est la décision du jury ? - if dec and (dec["code"] in sco_codes_parcours.CODES_SEM_VALIDES): + if dec and (dec["code"] in codes_cursus.CODES_SEM_VALIDES): # isinstance( sesMoyennes[i+1], float) and # mT = sesMoyennes[i+1] # substitue la moyenne si le semestre suivant est "valide" leFid = sem["formsemestre_id"] diff --git a/app/pe/pe_semestretag.py b/app/pe/pe_semestretag.py index eb6b7c46..20be15c4 100644 --- a/app/pe/pe_semestretag.py +++ b/app/pe/pe_semestretag.py @@ -43,7 +43,7 @@ from app.models import FormSemestre from app.models.moduleimpls import ModuleImpl from app.pe import pe_tagtable -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_tag_module from app.scodoc import sco_utils as scu @@ -116,7 +116,7 @@ class SemestreTag(pe_tagtable.TableTag): self.modimpls = [ modimpl for modimpl in self.nt.formsemestre.modimpls_sorted - if modimpl.module.ue.type == sco_codes_parcours.UE_STANDARD + if modimpl.module.ue.type == codes_cursus.UE_STANDARD ] # la liste des modules (objet modimpl) self.somme_coeffs = sum( [ diff --git a/app/scodoc/sco_codes_parcours.py b/app/scodoc/codes_cursus.py similarity index 83% rename from app/scodoc/sco_codes_parcours.py rename to app/scodoc/codes_cursus.py index 013f59cc..001a1b8a 100644 --- a/app/scodoc/sco_codes_parcours.py +++ b/app/scodoc/codes_cursus.py @@ -25,9 +25,10 @@ # ############################################################################## -"""Semestres: Codes gestion parcours (constantes) +"""Semestres: Codes gestion cursus (constantes) +Attention: ne pas confondre avec les "parcours" du BUT. +Renommage des anciens "parcours" -> "cursus" effectué en 9.4.41 """ -import collections import enum import numpy as np @@ -36,8 +37,8 @@ from app import log @enum.unique -class CodesParcours(enum.IntEnum): - """Codes numériques des parcours, enregistrés en base +class CodesCursus(enum.IntEnum): + """Codes numériques des cursus (ex parcours), enregistrés en base dans notes_formations.type_parcours Ne pas modifier. """ @@ -79,7 +80,7 @@ UE_STANDARD = 0 # UE "fondamentale" UE_SPORT = 1 # bonus "sport" UE_STAGE_LP = 2 # ue "projet tuteuré et stage" dans les Lic. Pro. UE_STAGE_10 = 3 # ue "stage" avec moyenne requise > 10 -UE_ELECTIVE = 4 # UE "élective" dans certains parcours (UCAC?, ISCID) +UE_ELECTIVE = 4 # UE "élective" dans certains cursus (UCAC?, ISCID) UE_PROFESSIONNELLE = 5 # UE "professionnelle" (ISCID, ...) UE_OPTIONNELLE = 6 # UE non fondamentales (ILEPS, ...) @@ -274,7 +275,7 @@ DEVENIRS_NEXT2 = {NEXT_OR_NEXT2: 1, NEXT2: 1} NO_SEMESTRE_ID = -1 # code semestre si pas de semestres -# Règles gestion parcours +# Règles gestion cursus class DUTRule(object): def __init__(self, rule_id, premise, conclusion): self.rule_id = rule_id @@ -296,12 +297,12 @@ class DUTRule(object): return True -# Types de parcours -DEFAULT_TYPE_PARCOURS = 100 # pour le menu de creation nouvelle formation +# Types de cursus +DEFAULT_TYPE_CURSUS = 100 # pour le menu de creation nouvelle formation -class TypeParcours(object): - TYPE_PARCOURS = None # id, utilisé par notes_formation.type_parcours +class TypeCursus: + TYPE_CURSUS = None # id, utilisé par notes_formation.type_parcours NAME = None # required NB_SEM = 1 # Nombre de semestres COMPENSATION_UE = True # inutilisé @@ -315,9 +316,9 @@ class TypeParcours(object): SESSION_NAME = "semestre" SESSION_NAME_A = "du " SESSION_ABBRV = "S" # S1, S2, ... - UNUSED_CODES = set() # Ensemble des codes jury non autorisés dans ce parcours + UNUSED_CODES = set() # Ensemble des codes jury non autorisés dans ce cursus UE_IS_MODULE = False # 1 seul module par UE (si plusieurs modules, etudiants censéments inscrits à un seul d'entre eux) - ECTS_ONLY = False # Parcours avec progression basée uniquement sur les ECTS + ECTS_ONLY = False # Cursus avec progression basée uniquement sur les ECTS ALLOWED_UE_TYPES = list( UE_TYPE_NAME.keys() ) # par defaut, autorise tous les types d'UE @@ -363,18 +364,18 @@ class TypeParcours(object): return False, """%d UE sous la barre""" % n -# Parcours définis (instances de sous-classes de TypeParcours): -TYPES_PARCOURS = collections.OrderedDict() # type : Parcours +# Cursus définis (instances de sous-classes de TypeCursus): +SCO_CURSUS: dict[int, TypeCursus] = {} # type : Cursus -def register_parcours(Parcours): - TYPES_PARCOURS[int(Parcours.TYPE_PARCOURS)] = Parcours +def register_cursus(cursus: TypeCursus): + SCO_CURSUS[int(cursus.TYPE_CURSUS)] = cursus -class ParcoursBUT(TypeParcours): +class CursusBUT(TypeCursus): """BUT Bachelor Universitaire de Technologie""" - TYPE_PARCOURS = 700 + TYPE_CURSUS = 700 NAME = "BUT" NB_SEM = 6 COMPENSATION_UE = False @@ -383,63 +384,63 @@ class ParcoursBUT(TypeParcours): ALLOWED_UE_TYPES = [UE_STANDARD, UE_SPORT] -register_parcours(ParcoursBUT()) +register_cursus(CursusBUT()) -class ParcoursDUT(TypeParcours): +class CursusDUT(TypeCursus): """DUT selon l'arrêté d'août 2005""" - TYPE_PARCOURS = 100 + TYPE_CURSUS = 100 NAME = "DUT" NB_SEM = 4 COMPENSATION_UE = True ALLOWED_UE_TYPES = [UE_STANDARD, UE_SPORT] -register_parcours(ParcoursDUT()) +register_cursus(CursusDUT()) -class ParcoursDUT4(ParcoursDUT): +class CursusDUT4(CursusDUT): """DUT (en 4 semestres sans compensations)""" - TYPE_PARCOURS = 110 + TYPE_CURSUS = 110 NAME = "DUT4" COMPENSATION_UE = False -register_parcours(ParcoursDUT4()) +register_cursus(CursusDUT4()) -class ParcoursDUTMono(TypeParcours): +class CursusDUTMono(TypeCursus): """DUT en un an (FC, Années spéciales)""" - TYPE_PARCOURS = 120 + TYPE_CURSUS = 120 NAME = "DUT" NB_SEM = 1 COMPENSATION_UE = False UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursDUTMono()) +register_cursus(CursusDUTMono()) -class ParcoursDUT2(ParcoursDUT): +class CursusDUT2(CursusDUT): """DUT en deux semestres (par ex.: années spéciales semestrialisées)""" - TYPE_PARCOURS = CodesParcours.DUT2 + TYPE_CURSUS = CodesCursus.DUT2 NAME = "DUT2" NB_SEM = 2 -register_parcours(ParcoursDUT2()) +register_cursus(CursusDUT2()) -class ParcoursLP(TypeParcours): +class CursusLP(TypeCursus): """Licence Pro (en un "semestre") - (pour anciennes LP. Après 2014, préférer ParcoursLP2014) + (pour anciennes LP. Après 2014, préférer CursusLP2014) """ - TYPE_PARCOURS = CodesParcours.LP + TYPE_CURSUS = CodesCursus.LP NAME = "LP" NB_SEM = 1 COMPENSATION_UE = False @@ -450,35 +451,35 @@ class ParcoursLP(TypeParcours): UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursLP()) +register_cursus(CursusLP()) -class ParcoursLP2sem(ParcoursLP): +class CursusLP2sem(CursusLP): """Licence Pro (en deux "semestres")""" - TYPE_PARCOURS = CodesParcours.LP2sem + TYPE_CURSUS = CodesCursus.LP2sem NAME = "LP2sem" NB_SEM = 2 COMPENSATION_UE = True UNUSED_CODES = set((ADC,)) # autorise les codes ATT et ATB, mais pas ADC. -register_parcours(ParcoursLP2sem()) +register_cursus(CursusLP2sem()) -class ParcoursLP2semEvry(ParcoursLP): +class CursusLP2semEvry(CursusLP): """Licence Pro (en deux "semestres", U. Evry)""" - TYPE_PARCOURS = CodesParcours.LP2semEvry + TYPE_CURSUS = CodesCursus.LP2semEvry NAME = "LP2semEvry" NB_SEM = 2 COMPENSATION_UE = True -register_parcours(ParcoursLP2semEvry()) +register_cursus(CursusLP2semEvry()) -class ParcoursLP2014(TypeParcours): +class CursusLP2014(TypeCursus): """Licence Pro (en un "semestre"), selon arrêté du 22/01/2014""" # Note: texte de référence @@ -495,7 +496,7 @@ class ParcoursLP2014(TypeParcours): # l'établissement d'un coefficient qui peut varier dans un rapport de 1 à 3. ", etc ne sont _pas_ # vérifiés par ScoDoc) - TYPE_PARCOURS = CodesParcours.LP2014 + TYPE_CURSUS = CodesCursus.LP2014 NAME = "LP2014" NB_SEM = 1 ALLOWED_UE_TYPES = [UE_STANDARD, UE_SPORT, UE_STAGE_LP] @@ -533,74 +534,74 @@ class ParcoursLP2014(TypeParcours): return True, "" # pas de coef, condition ok -register_parcours(ParcoursLP2014()) +register_cursus(CursusLP2014()) -class ParcoursLP2sem2014(ParcoursLP): +class CursusLP2sem2014(CursusLP): """Licence Pro (en deux "semestres", selon arrêté du 22/01/2014)""" - TYPE_PARCOURS = CodesParcours.LP2sem2014 + TYPE_CURSUS = CodesCursus.LP2sem2014 NAME = "LP2014_2sem" NB_SEM = 2 -register_parcours(ParcoursLP2sem2014()) +register_cursus(CursusLP2sem2014()) # Masters: M2 en deux semestres -class ParcoursM2(TypeParcours): +class CursusM2(TypeCursus): """Master 2 (en deux "semestres")""" - TYPE_PARCOURS = CodesParcours.M2 + TYPE_CURSUS = CodesCursus.M2 NAME = "M2sem" NB_SEM = 2 COMPENSATION_UE = True UNUSED_CODES = set((ATT, ATB)) -register_parcours(ParcoursM2()) +register_cursus(CursusM2()) -class ParcoursM2noncomp(ParcoursM2): +class CursusM2noncomp(CursusM2): """Master 2 (en deux "semestres") sans compensation""" - TYPE_PARCOURS = CodesParcours.M2noncomp + TYPE_CURSUS = CodesCursus.M2noncomp NAME = "M2noncomp" COMPENSATION_UE = False UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursM2noncomp()) +register_cursus(CursusM2noncomp()) -class ParcoursMono(TypeParcours): +class CursusMono(TypeCursus): """Formation générique en une session""" - TYPE_PARCOURS = CodesParcours.Mono + TYPE_CURSUS = CodesCursus.Mono NAME = "Mono" NB_SEM = 1 COMPENSATION_UE = False UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursMono()) +register_cursus(CursusMono()) -class ParcoursLegacy(TypeParcours): +class CursusLegacy(TypeCursus): """DUT (ancien ScoDoc, ne plus utiliser)""" - TYPE_PARCOURS = CodesParcours.Legacy + TYPE_CURSUS = CodesCursus.Legacy NAME = "DUT" NB_SEM = 4 COMPENSATION_UE = None # backward compat: defini dans formsemestre ALLOWED_UE_TYPES = [UE_STANDARD, UE_SPORT] -register_parcours(ParcoursLegacy()) +register_cursus(CursusLegacy()) -class ParcoursISCID(TypeParcours): - """Superclasse pour les parcours de l'ISCID""" +class CursusISCID(TypeCursus): + """Superclasse pour les cursus de l'ISCID""" # SESSION_NAME = "année" # SESSION_NAME_A = "de l'" @@ -619,32 +620,32 @@ class ParcoursISCID(TypeParcours): ECTS_PROF_DIPL = 0 # crédits professionnels requis pour obtenir le diplôme -class ParcoursBachelorISCID6(ParcoursISCID): +class CursusBachelorISCID6(CursusISCID): """ISCID: Bachelor en 3 ans (6 sem.)""" - NAME = "ParcoursBachelorISCID6" - TYPE_PARCOURS = CodesParcours.ISCID6 + NAME = "CursusBachelorISCID6" + TYPE_CURSUS = CodesCursus.ISCID6 NAME = "" NB_SEM = 6 ECTS_PROF_DIPL = 8 # crédits professionnels requis pour obtenir le diplôme -register_parcours(ParcoursBachelorISCID6()) +register_cursus(CursusBachelorISCID6()) -class ParcoursMasterISCID4(ParcoursISCID): +class CursusMasterISCID4(CursusISCID): "ISCID: Master en 2 ans (4 sem.)" - TYPE_PARCOURS = CodesParcours.ISCID4 - NAME = "ParcoursMasterISCID4" + TYPE_CURSUS = CodesCursus.ISCID4 + NAME = "CursusMasterISCID4" NB_SEM = 4 ECTS_PROF_DIPL = 15 # crédits professionnels requis pour obtenir le diplôme -register_parcours(ParcoursMasterISCID4()) +register_cursus(CursusMasterISCID4()) -class ParcoursILEPS(TypeParcours): - """Superclasse pour les parcours de l'ILEPS""" +class CursusILEPS(TypeCursus): + """Superclasse pour les cursus de l'ILEPS""" # SESSION_NAME = "année" # SESSION_NAME_A = "de l'" @@ -660,18 +661,18 @@ class ParcoursILEPS(TypeParcours): BARRE_UE_DEFAULT = 0.0 # pas de barre sur les autres UE -class ParcoursLicenceILEPS6(ParcoursILEPS): +class CursusLicenceILEPS6(CursusILEPS): """ILEPS: Licence 6 semestres""" - TYPE_PARCOURS = 1010 + TYPE_CURSUS = 1010 NAME = "LicenceILEPS6" NB_SEM = 6 -register_parcours(ParcoursLicenceILEPS6()) +register_cursus(CursusLicenceILEPS6()) -class ParcoursUCAC(TypeParcours): +class CursusUCAC(TypeCursus): """Règles de validation UCAC""" SESSION_NAME = "année" @@ -685,79 +686,79 @@ class ParcoursUCAC(TypeParcours): ) -class ParcoursLicenceUCAC3(ParcoursUCAC): +class CursusLicenceUCAC3(CursusUCAC): """UCAC: Licence en 3 sessions d'un an""" - TYPE_PARCOURS = CodesParcours.LicenceUCAC3 + TYPE_CURSUS = CodesCursus.LicenceUCAC3 NAME = "Licence UCAC en 3 sessions d'un an" NB_SEM = 3 -register_parcours(ParcoursLicenceUCAC3()) +register_cursus(CursusLicenceUCAC3()) -class ParcoursMasterUCAC2(ParcoursUCAC): +class CursusMasterUCAC2(CursusUCAC): """UCAC: Master en 2 sessions d'un an""" - TYPE_PARCOURS = CodesParcours.MasterUCAC2 + TYPE_CURSUS = CodesCursus.MasterUCAC2 NAME = "Master UCAC en 2 sessions d'un an" NB_SEM = 2 -register_parcours(ParcoursMasterUCAC2()) +register_cursus(CursusMasterUCAC2()) -class ParcoursMonoUCAC(ParcoursUCAC): +class CursusMonoUCAC(CursusUCAC): """UCAC: Formation en 1 session de durée variable""" - TYPE_PARCOURS = CodesParcours.MonoUCAC + TYPE_CURSUS = CodesCursus.MonoUCAC NAME = "Formation UCAC en 1 session de durée variable" NB_SEM = 1 UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursMonoUCAC()) +register_cursus(CursusMonoUCAC()) -class Parcours6Sem(TypeParcours): - """Parcours générique en 6 semestres""" +class Cursus6Sem(TypeCursus): + """Cursus générique en 6 semestres""" - TYPE_PARCOURS = CodesParcours.GEN_6_SEM + TYPE_CURSUS = CodesCursus.GEN_6_SEM NAME = "Formation en 6 semestres" NB_SEM = 6 COMPENSATION_UE = True -register_parcours(Parcours6Sem()) +register_cursus(Cursus6Sem()) # # En cours d'implémentation: -# class ParcoursLicenceLMD(TypeParcours): +# class CursusLicenceLMD(TypeCursus): # """Licence standard en 6 semestres dans le LMD""" -# TYPE_PARCOURS = 401 +# TYPE_CURSUS = 401 # NAME = "Licence LMD" # NB_SEM = 6 # COMPENSATION_UE = True -# register_parcours(ParcoursLicenceLMD()) +# register_cursus(CursusLicenceLMD()) -class ParcoursMasterLMD(TypeParcours): +class CursusMasterLMD(TypeCursus): """Master générique en 4 semestres dans le LMD""" - TYPE_PARCOURS = CodesParcours.MasterLMD + TYPE_CURSUS = CodesCursus.MasterLMD NAME = "Master LMD" NB_SEM = 4 COMPENSATION_UE = True # variabale inutilisée UNUSED_CODES = set((ADC, ATT, ATB)) -register_parcours(ParcoursMasterLMD()) +register_cursus(CursusMasterLMD()) -class ParcoursMasterIG(ParcoursMasterLMD): +class CursusMasterIG(CursusMasterLMD): """Master de l'Institut Galilée (U. Paris 13) en 4 semestres (LMD)""" - TYPE_PARCOURS = CodesParcours.MasterIG + TYPE_CURSUS = CodesCursus.MasterIG NAME = "Master IG P13" BARRE_MOY = 10.0 NOTES_BARRE_VALID_UE_TH = 10.0 # seuil pour valider UE @@ -767,7 +768,7 @@ class ParcoursMasterIG(ParcoursMasterLMD): BARRE_MOY_UE_STAGE = 10.0 ALLOWED_UE_TYPES = [UE_STANDARD, UE_SPORT, UE_STAGE_10] - def check_barre_ues(self, ues_status): # inspire de la fonction de ParcoursLP2014 + def check_barre_ues(self, ues_status): # inspire de la fonction de CursusLP2014 """True si la ou les conditions sur les UE sont valides moyenne d'UE > 7, ou > 10 si UE de stage """ @@ -806,10 +807,10 @@ class ParcoursMasterIG(ParcoursMasterLMD): return True, "" # pas de coef, condition ok -register_parcours(ParcoursMasterIG()) +register_cursus(CursusMasterIG()) -# Ajouter ici vos parcours, le TYPE_PARCOURS devant être unique au monde +# Ajouter ici vos cursus, le TYPE_CURSUS devant être unique au monde # (avisez sur la liste de diffusion) @@ -817,16 +818,16 @@ register_parcours(ParcoursMasterIG()) # ------------------------- -_tp = list(TYPES_PARCOURS.items()) +_tp = list(SCO_CURSUS.items()) _tp.sort(key=lambda x: x[1].__doc__) # sort by intitulé -FORMATION_PARCOURS_DESCRS = [p[1].__doc__ for p in _tp] # intitulés (eg pour menu) -FORMATION_PARCOURS_TYPES = [p[0] for p in _tp] # codes numeriques (TYPE_PARCOURS) +FORMATION_CURSUS_DESCRS = [p[1].__doc__ for p in _tp] # intitulés (eg pour menu) +FORMATION_CURSUS_TYPES = [p[0] for p in _tp] # codes numeriques (TYPE_CURSUS) -def get_parcours_from_code(code_parcours): - parcours = TYPES_PARCOURS.get(code_parcours) - if parcours is None: - log(f"Warning: invalid code_parcours: {code_parcours}") +def get_cursus_from_code(code_cursus): + cursus = SCO_CURSUS.get(code_cursus) + if cursus is None: + log(f"Warning: invalid code_cursus: {code_cursus}") # default to legacy - parcours = TYPES_PARCOURS.get(0) - return parcours + cursus = SCO_CURSUS.get(0) + return cursus diff --git a/app/scodoc/dutrules.py b/app/scodoc/dutrules.py index ed281bb9..c87d5c46 100644 --- a/app/scodoc/dutrules.py +++ b/app/scodoc/dutrules.py @@ -4,7 +4,7 @@ # # Command: ./csv2rules.py misc/parcoursDUT.csv # -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import ( DUTRule, ADC, ADJ, diff --git a/app/scodoc/notes_table.py b/app/scodoc/notes_table.py index a54a7bda..0379bbc2 100644 --- a/app/scodoc/notes_table.py +++ b/app/scodoc/notes_table.py @@ -48,14 +48,14 @@ from app.scodoc.sco_formsemestre import ( formsemestre_uecoef_list, formsemestre_uecoef_create, ) -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import ( DEF, UE_SPORT, ue_is_fondamentale, ue_is_professionnelle, ) from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_compute_moy from app.scodoc.sco_cursus import formsemestre_get_etud_capitalisation from app.scodoc import sco_cursus_dut @@ -244,7 +244,7 @@ class NotesTable: self.formation = sco_formations.formation_list( args={"formation_id": self.sem["formation_id"]} )[0] - self.parcours = sco_codes_parcours.get_parcours_from_code( + self.parcours = codes_cursus.get_cursus_from_code( self.formation["type_parcours"] ) @@ -1048,7 +1048,7 @@ class NotesTable: decisions_jury_ues[etudid] = {} # Calcul des ECTS associes a cette UE: ects = 0.0 - if sco_codes_parcours.code_ue_validant(code): + if codes_cursus.code_ue_validant(code): ue = self.uedict.get(ue_id, None) if ue is None: # not in list for this sem ??? (probably an error) log( diff --git a/app/scodoc/sco_apogee_csv.py b/app/scodoc/sco_apogee_csv.py index 8d21d579..1045e7ba 100644 --- a/app/scodoc/sco_apogee_csv.py +++ b/app/scodoc/sco_apogee_csv.py @@ -106,8 +106,8 @@ import app.scodoc.sco_utils as scu from app.scodoc.sco_exceptions import ScoValueError, ScoFormatError from app.scodoc.gen_tables import GenTable from app.scodoc.sco_vdi import ApoEtapeVDI -from app.scodoc.sco_codes_parcours import code_semestre_validant -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import code_semestre_validant +from app.scodoc.codes_cursus import ( DEF, DEM, NAR, diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py index 4be4c11d..2bc44494 100644 --- a/app/scodoc/sco_bulletins.py +++ b/app/scodoc/sco_bulletins.py @@ -53,7 +53,7 @@ from app.scodoc import sco_bulletins_generator from app.scodoc import sco_bulletins_json from app.scodoc import sco_bulletins_pdf from app.scodoc import sco_bulletins_xml -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_etud from app.scodoc import sco_evaluation_db from app.scodoc import sco_formations @@ -174,9 +174,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): "version": 0, } I["formation"] = formation_dict - I["parcours"] = sco_codes_parcours.get_parcours_from_code( - I["formation"]["type_parcours"] - ) + I["parcours"] = codes_cursus.get_cursus_from_code(I["formation"]["type_parcours"]) # Infos sur l'etudiant I["etud"] = sco_etud.get_etud_info(etudid=etudid, filled=True)[0] I["descr_situation"] = I["etud"]["inscriptionstr"] @@ -222,7 +220,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): I["demission"] = "" if I["etud_etat"] == scu.DEMISSION: I["demission"] = "(Démission)" - elif I["etud_etat"] == sco_codes_parcours.DEF: + elif I["etud_etat"] == codes_cursus.DEF: I["demission"] = "(Défaillant)" # --- Appreciations @@ -239,9 +237,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): I["mention"] = "" if dpv: decision_sem = dpv["decisions"][0]["decision_sem"] - if decision_sem and sco_codes_parcours.code_semestre_validant( - decision_sem["code"] - ): + if decision_sem and codes_cursus.code_semestre_validant(decision_sem["code"]): I["mention"] = scu.get_mention(moy_gen) if dpv and dpv["decisions"][0]: @@ -307,7 +303,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): continue u["ue_status"] = ue_status # { 'moy', 'coef_ue', ...} - if ue["type"] != sco_codes_parcours.UE_SPORT: + if ue["type"] != codes_cursus.UE_SPORT: u["cur_moy_ue_txt"] = scu.fmt_note(ue_status["cur_moy_ue"]) else: if nt.bonus is not None: @@ -335,7 +331,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): and ue["ue_id"] in dpv["decisions"][0]["decisions_ue"] ): u["ects"] = dpv["decisions"][0]["decisions_ue"][ue["ue_id"]]["ects"] - if ue["type"] == sco_codes_parcours.UE_ELECTIVE: + if ue["type"] == codes_cursus.UE_ELECTIVE: u["ects"] = ( "%g+" % u["ects"] ) # ajoute un "+" pour indiquer ECTS d'une UE élective @@ -388,7 +384,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): _sort_mod_by_matiere(u["modules_capitalized"], nt_cap, etudid) ) else: - if prefs["bul_show_ue_rangs"] and ue["type"] != sco_codes_parcours.UE_SPORT: + if prefs["bul_show_ue_rangs"] and ue["type"] != codes_cursus.UE_SPORT: if ue_attente or nt.ue_rangs[ue["ue_id"]][0] is None: u["ue_descr_txt"] = "%s/%s" % ( scu.RANG_ATTENTE_STR, diff --git a/app/scodoc/sco_bulletins_pdf.py b/app/scodoc/sco_bulletins_pdf.py index 369187ca..0e088370 100644 --- a/app/scodoc/sco_bulletins_pdf.py +++ b/app/scodoc/sco_bulletins_pdf.py @@ -63,7 +63,7 @@ from app import log, ScoValueError from app.models import FormSemestre from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_pdf from app.scodoc import sco_preferences from app.scodoc import sco_etud @@ -286,7 +286,7 @@ def get_filigranne(etud_etat: str, prefs, decision_sem=None) -> str: """Texte à placer en "filigranne" sur le bulletin pdf""" if etud_etat == scu.DEMISSION: return "Démission" - elif etud_etat == sco_codes_parcours.DEF: + elif etud_etat == codes_cursus.DEF: return "Défaillant" elif (prefs["bul_show_temporary"] and not decision_sem) or prefs[ "bul_show_temporary_forced" diff --git a/app/scodoc/sco_bulletins_standard.py b/app/scodoc/sco_bulletins_standard.py index cd535be0..be5c506f 100644 --- a/app/scodoc/sco_bulletins_standard.py +++ b/app/scodoc/sco_bulletins_standard.py @@ -56,7 +56,7 @@ import app.scodoc.sco_utils as scu from app.scodoc.sco_pdf import SU, make_paras from app.scodoc import sco_preferences from app.scodoc.sco_permissions import Permission -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import ( UE_COLORS, UE_DEFAULT_COLOR, UE_ELECTIVE, diff --git a/app/scodoc/sco_bulletins_xml.py b/app/scodoc/sco_bulletins_xml.py index c67b8ce0..96591cdb 100644 --- a/app/scodoc/sco_bulletins_xml.py +++ b/app/scodoc/sco_bulletins_xml.py @@ -52,7 +52,7 @@ from app import log from app.but.bulletin_but_xml_compat import bulletin_but_xml_compat from app.models.formsemestre import FormSemestre from app.scodoc import sco_abs -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_ue from app.scodoc import sco_evaluation_db from app.scodoc import sco_formsemestre @@ -218,7 +218,7 @@ def make_xml_formsemestre_bulletinetud( code_apogee=quote_xml_attr(ue["code_apogee"]), ) doc.append(x_ue) - if ue["type"] != sco_codes_parcours.UE_SPORT: + if ue["type"] != codes_cursus.UE_SPORT: v = ue_status["cur_moy_ue"] if ue_status else "" else: v = nt.bonus[etudid] if nt.bonus is not None else 0.0 diff --git a/app/scodoc/sco_config.py b/app/scodoc/sco_config.py index b338f9a7..a7f38923 100644 --- a/app/scodoc/sco_config.py +++ b/app/scodoc/sco_config.py @@ -98,7 +98,7 @@ CONFIG.PUBLISH_PORTAL_PHOTO_URL = False # (le test cracklib.FascistCheck s'appliquera dans tous les cas) CONFIG.MIN_PASSWORD_LENGTH = 0 -# Ce dictionnaire est fusionné à celui de sco_codes_parcours +# Ce dictionnaire est fusionné à celui de codes_cursus # pour définir les codes jury et explications associées CONFIG.CODES_EXPL = { # AJ : 'Ajourné (échec)', diff --git a/app/scodoc/sco_cursus_dut.py b/app/scodoc/sco_cursus_dut.py index 0549f667..5b5b3c65 100644 --- a/app/scodoc/sco_cursus_dut.py +++ b/app/scodoc/sco_cursus_dut.py @@ -40,7 +40,7 @@ from app.scodoc.scolog import logdb from app.scodoc import sco_cache, sco_etud from app.scodoc import sco_formsemestre from app.scodoc import sco_formations -from app.scodoc.sco_codes_parcours import ( +from app.scodoc.codes_cursus import ( CMP, ADC, ADJ, @@ -353,7 +353,7 @@ class SituationEtudCursusClassic(SituationEtudCursus): l'étudiant (quelle que soit la formation), le plus ancien en tête""" return self.sems - def get_parcours_descr(self, filter_futur=False): + def get_cursus_descr(self, filter_futur=False): """Description brève du parcours: "S1, S2, ..." Si filter_futur, ne mentionne pas les semestres qui sont après le semestre courant. """ diff --git a/app/scodoc/sco_edit_apc.py b/app/scodoc/sco_edit_apc.py index b904bd5b..a947bc63 100644 --- a/app/scodoc/sco_edit_apc.py +++ b/app/scodoc/sco_edit_apc.py @@ -31,7 +31,7 @@ from app import db from app.but import apc_edit_ue from app.models import UniteEns, Matiere, Module, FormSemestre, ModuleImpl from app.models.validations import ScolarFormSemestreValidation -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT import app.scodoc.sco_utils as scu from app.scodoc import sco_groups from app.scodoc.sco_utils import ModuleType @@ -48,8 +48,8 @@ def html_edit_formation_apc( - Les ressources - Les SAÉs """ - parcours = formation.get_parcours() - assert parcours.APC_SAE + cursus = formation.get_cursus() + assert cursus.APC_SAE ressources = formation.modules.filter_by(module_type=ModuleType.RESSOURCE).order_by( Module.semestre_id, Module.numero, Module.code @@ -58,7 +58,7 @@ def html_edit_formation_apc( Module.semestre_id, Module.numero, Module.code ) if semestre_idx is None: - semestre_ids = range(1, parcours.NB_SEM + 1) + semestre_ids = range(1, cursus.NB_SEM + 1) else: semestre_ids = [semestre_idx] other_modules = formation.modules.filter( diff --git a/app/scodoc/sco_edit_formation.py b/app/scodoc/sco_edit_formation.py index b52e3d35..ae042eaf 100644 --- a/app/scodoc/sco_edit_formation.py +++ b/app/scodoc/sco_edit_formation.py @@ -46,7 +46,7 @@ from app.scodoc.sco_exceptions import ScoValueError, ScoNonEmptyFormationObject from app.scodoc import html_sco_header from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_ue from app.scodoc import sco_formations from app.scodoc import sco_formsemestre @@ -157,7 +157,7 @@ def formation_edit(formation_id=None, create=False): """, ] submitlabel = "Créer cette formation" - initvalues = {"type_parcours": sco_codes_parcours.DEFAULT_TYPE_PARCOURS} + initvalues = {"type_parcours": codes_cursus.DEFAULT_TYPE_CURSUS} is_locked = False else: # edit an existing formation @@ -211,8 +211,8 @@ def formation_edit(formation_id=None, create=False): "input_type": "menu", "title": "Type de parcours", "type": "int", - "allowed_values": sco_codes_parcours.FORMATION_PARCOURS_TYPES, - "labels": sco_codes_parcours.FORMATION_PARCOURS_DESCRS, + "allowed_values": codes_cursus.FORMATION_CURSUS_TYPES, + "labels": codes_cursus.FORMATION_CURSUS_DESCRS, "explanation": "détermine notamment le nombre de semestres et les règles de validation d'UE et de semestres (barres)", "readonly": is_locked, }, diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py index c4b1624c..8038c8e5 100644 --- a/app/scodoc/sco_edit_module.py +++ b/app/scodoc/sco_edit_module.py @@ -52,7 +52,7 @@ from app.scodoc.sco_exceptions import ( ScoNonEmptyFormationObject, ) from app.scodoc import html_sco_header -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_matiere from app.scodoc import sco_moduleimpl @@ -300,7 +300,7 @@ def module_edit( formation = module.formation unlocked = not module_is_locked(module_id) - parcours = sco_codes_parcours.get_parcours_from_code(formation.type_parcours) + parcours = codes_cursus.get_cursus_from_code(formation.type_parcours) is_apc = parcours.APC_SAE # BUT if not create: orig_semestre_idx = module.ue.semestre_idx if is_apc else module.semestre_id @@ -724,7 +724,7 @@ def module_edit( ) ] else: - if module.ue.type == sco_codes_parcours.UE_STANDARD: + if module.ue.type == codes_cursus.UE_STANDARD: descr += [ ( "app_critiques", @@ -957,7 +957,7 @@ def formation_add_malus_modules( if semestre_id is not None: ues = ues.filter_by(semestre_idx=semestre_id) for ue in ues: - if ue.type == sco_codes_parcours.UE_STANDARD: + if ue.type == codes_cursus.UE_STANDARD: if ue_add_malus_module(ue, titre=titre) != None: nb += 1 diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index 2ea467c2..959174f7 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -59,7 +59,7 @@ from app.scodoc.sco_exceptions import ( ) from app.scodoc import html_sco_header -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_apc from app.scodoc import sco_edit_matiere from app.scodoc import sco_edit_module @@ -273,9 +273,9 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No formation = Formation.query.get(formation_id) if not formation: raise ScoValueError(f"Formation inexistante ! (id={formation_id})") - parcours = formation.get_parcours() - is_apc = parcours.APC_SAE - semestres_indices = list(range(1, parcours.NB_SEM + 1)) + cursus = formation.get_cursus() + is_apc = cursus.APC_SAE + semestres_indices = list(range(1, cursus.NB_SEM + 1)) H = [ html_sco_header.sco_header(page_title=title, javascripts=["js/edit_ue.js"]), "

" + title, @@ -296,9 +296,9 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No else "", ] - ue_types = parcours.ALLOWED_UE_TYPES + ue_types = cursus.ALLOWED_UE_TYPES ue_types.sort() - ue_types_names = [sco_codes_parcours.UE_TYPE_NAME[k] for k in ue_types] + ue_types_names = [codes_cursus.UE_TYPE_NAME[k] for k in ue_types] ue_types = [str(x) for x in ue_types] form_descr = [ @@ -324,8 +324,8 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No "input_type": "menu", "type": "int", "allow_null": False, - "title": parcours.SESSION_NAME.capitalize(), - "explanation": f"{parcours.SESSION_NAME} de l'UE dans la formation", + "title": cursus.SESSION_NAME.capitalize(), + "explanation": f"{cursus.SESSION_NAME} de l'UE dans la formation", "labels": ["non spécifié"] + [str(x) for x in semestres_indices], "allowed_values": [""] + semestres_indices, }, @@ -433,7 +433,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No }, ), ] - if create and not parcours.UE_IS_MODULE and not is_apc: + if create and not cursus.UE_IS_MODULE and not is_apc: form_descr.append( ( "create_matiere", @@ -502,13 +502,13 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No formation_id, int(tf[2]["semestre_idx"]) ) ue_id = do_ue_create(tf[2]) - if is_apc or parcours.UE_IS_MODULE or tf[2]["create_matiere"]: + if is_apc or cursus.UE_IS_MODULE or tf[2]["create_matiere"]: # rappel: en APC, toutes les UE ont une matière, créée ici # (inutilisée mais à laquelle les modules sont rattachés) matiere_id = sco_edit_matiere.do_matiere_create( {"ue_id": ue_id, "titre": tf[2]["titre"], "numero": 1}, ) - if parcours.UE_IS_MODULE: + if cursus.UE_IS_MODULE: # dans ce mode, crée un (unique) module dans l'UE: _ = sco_edit_module.do_module_create( { @@ -560,14 +560,14 @@ def _add_ue_semestre_id(ues: list[dict], is_apc): if ue["semestre_idx"] is not None: ue["semestre_id"] = ue["semestre_idx"] elif is_apc: - ue["semestre_id"] = sco_codes_parcours.UE_SEM_DEFAULT + ue["semestre_id"] = codes_cursus.UE_SEM_DEFAULT else: # était le comportement ScoDoc7 modules = sco_edit_module.module_list(args={"ue_id": ue["ue_id"]}) if modules: ue["semestre_id"] = modules[0]["semestre_id"] else: - ue["semestre_id"] = sco_codes_parcours.UE_SEM_DEFAULT + ue["semestre_id"] = codes_cursus.UE_SEM_DEFAULT def next_ue_numero(formation_id, semestre_id=None): @@ -582,7 +582,7 @@ def next_ue_numero(formation_id, semestre_id=None): return ues[-1]["numero"] + 1000 else: # Avec semestre: (prend le semestre du 1er module de l'UE) - _add_ue_semestre_id(ues, formation.get_parcours().APC_SAE) + _add_ue_semestre_id(ues, formation.get_cursus().APC_SAE) ue_list_semestre = [ue for ue in ues if ue["semestre_id"] == semestre_id] if ue_list_semestre: return ue_list_semestre[-1]["numero"] + 10 @@ -641,7 +641,7 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""): # was ue_list formation: Formation = Formation.query.get(formation_id) if not formation: raise ScoValueError("invalid formation_id") - parcours = formation.get_parcours() + parcours = formation.get_cursus() is_apc = parcours.APC_SAE locked = formation.has_locked_sems() if semestre_idx == "all" or semestre_idx == "": @@ -1044,7 +1044,7 @@ def _ue_table_ues( if cur_ue_semestre_id != ue["semestre_id"]: cur_ue_semestre_id = ue["semestre_id"] - if ue["semestre_id"] == sco_codes_parcours.UE_SEM_DEFAULT: + if ue["semestre_id"] == codes_cursus.UE_SEM_DEFAULT: lab = "Pas d'indication de semestre:" else: lab = f"""Semestre {ue["semestre_id"]}:""" @@ -1076,10 +1076,10 @@ def _ue_table_ues( """ % ue ) - if ue["type"] != sco_codes_parcours.UE_STANDARD: + if ue["type"] != codes_cursus.UE_STANDARD: H.append( '%s' - % sco_codes_parcours.UE_TYPE_NAME[ue["type"]] + % codes_cursus.UE_TYPE_NAME[ue["type"]] ) if ue["is_external"]: # Cas spécial: si l'UE externe a plus d'un module, c'est peut être une UE diff --git a/app/scodoc/sco_export_results.py b/app/scodoc/sco_export_results.py index 858fc5ae..46e25ccc 100644 --- a/app/scodoc/sco_export_results.py +++ b/app/scodoc/sco_export_results.py @@ -37,7 +37,7 @@ import app.scodoc.sco_utils as scu from app import log from app.scodoc import html_sco_header from app.scodoc import sco_bac -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_cache from app.scodoc import sco_formations from app.scodoc import sco_preferences @@ -45,7 +45,7 @@ from app.scodoc import sco_pvjury from app.scodoc import sco_etud import sco_version from app.scodoc.gen_tables import GenTable -from app.scodoc.sco_codes_parcours import NO_SEMESTRE_ID +from app.scodoc.codes_cursus import NO_SEMESTRE_ID def _build_results_table(start_date=None, end_date=None, types_parcours=[]): @@ -68,10 +68,10 @@ def _build_results_table(start_date=None, end_date=None, types_parcours=[]): sem["formation"] = sco_formations.formation_list( args={"formation_id": sem["formation_id"]} )[0] - sem["parcours"] = sco_codes_parcours.get_parcours_from_code( + sem["parcours"] = codes_cursus.get_cursus_from_code( sem["formation"]["type_parcours"] ) - if sem["parcours"].TYPE_PARCOURS in types_parcours: + if sem["parcours"].TYPE_CURSUS in types_parcours: semlist_parcours.append(sem) formsemestre_ids_parcours = [sem["formsemestre_id"] for sem in semlist_parcours] @@ -266,18 +266,18 @@ def scodoc_table_results( menu_options = [] type_parcours_set = set() for sem in sorted(semlist, key=lambda x: x["dateord"]): - if sem["parcours"].TYPE_PARCOURS in types_parcours: + if sem["parcours"].TYPE_CURSUS in types_parcours: selected = "selected" else: selected = "" - if sem["parcours"].TYPE_PARCOURS not in type_parcours_set: - type_parcours_set.add(sem["parcours"].TYPE_PARCOURS) + if sem["parcours"].TYPE_CURSUS not in type_parcours_set: + type_parcours_set.add(sem["parcours"].TYPE_CURSUS) menu_options.append( '' - % (sem["parcours"].TYPE_PARCOURS, selected, sem["parcours"].__doc__) + % (sem["parcours"].TYPE_CURSUS, selected, sem["parcours"].__doc__) ) - if sem["parcours"].TYPE_PARCOURS in types_parcours: + if sem["parcours"].TYPE_CURSUS in types_parcours: info_sems.append( '
  • %(titremois)s
  • ' % sem diff --git a/app/scodoc/sco_formations.py b/app/scodoc/sco_formations.py index 93f64734..3df737b4 100644 --- a/app/scodoc/sco_formations.py +++ b/app/scodoc/sco_formations.py @@ -48,7 +48,7 @@ from app.models.but_refcomp import ( ApcReferentielCompetences, ) from app.scodoc import sco_cache -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_edit_matiere from app.scodoc import sco_edit_module from app.scodoc import sco_edit_ue @@ -467,7 +467,7 @@ def formation_list_table(formation_id=None, args={}): # Traduit/ajoute des champs à afficher: for f in formations: try: - f["parcours_name"] = sco_codes_parcours.get_parcours_from_code( + f["parcours_name"] = codes_cursus.get_cursus_from_code( f["type_parcours"] ).NAME except: diff --git a/app/scodoc/sco_formsemestre.py b/app/scodoc/sco_formsemestre.py index 679ede4e..f5c49878 100644 --- a/app/scodoc/sco_formsemestre.py +++ b/app/scodoc/sco_formsemestre.py @@ -39,9 +39,9 @@ import app.scodoc.sco_utils as scu from app import log from app.models import Departement from app.models import FormSemestre -from app.scodoc import sco_cache, sco_codes_parcours, sco_formations, sco_preferences +from app.scodoc import sco_cache, codes_cursus, sco_formations, sco_preferences from app.scodoc.gen_tables import GenTable -from app.scodoc.sco_codes_parcours import NO_SEMESTRE_ID +from app.scodoc.codes_cursus import NO_SEMESTRE_ID from app.scodoc.sco_exceptions import ScoInvalidIdType, ScoValueError from app.scodoc.sco_vdi import ApoEtapeVDI @@ -151,7 +151,7 @@ def _formsemestre_enrich(sem): if not formations: raise ScoValueError("pas de formation pour ce semestre !") F = formations[0] - parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"]) + parcours = codes_cursus.get_cursus_from_code(F["type_parcours"]) # 'S1', 'S2', ... ou '' pour les monosemestres if sem["semestre_id"] != NO_SEMESTRE_ID: sem["sem_id_txt"] = "S%s" % sem["semestre_id"] diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index 210d1e76..40c8cd95 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -50,7 +50,7 @@ from app.scodoc.sco_exceptions import AccessDenied, ScoValueError from app.scodoc.sco_permissions import Permission from app.scodoc.sco_vdi import ApoEtapeVDI from app.scodoc import html_sco_header -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_compute_moy from app.scodoc import sco_edit_module from app.scodoc import sco_etud @@ -206,7 +206,7 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N # Liste des ID de semestres if formation.type_parcours is not None: - parcours = sco_codes_parcours.get_parcours_from_code(formation.type_parcours) + parcours = codes_cursus.get_cursus_from_code(formation.type_parcours) nb_sem = parcours.NB_SEM else: nb_sem = 10 # fallback, max 10 semestres @@ -1008,7 +1008,7 @@ def _formsemestre_check_module_list(module_ids, semestre_idx): def _formsemestre_check_ue_bonus_unicity(module_ids): """Vérifie qu'il n'y a qu'une seule UE bonus associée aux modules choisis""" ues = [Module.query.get_or_404(module_id).ue for module_id in module_ids] - ues_bonus = {ue.id for ue in ues if ue.type == sco_codes_parcours.UE_SPORT} + ues_bonus = {ue.id for ue in ues if ue.type == codes_cursus.UE_SPORT} if len(ues_bonus) > 1: raise ScoValueError( """Les modules de bonus sélectionnés ne sont pas tous dans la même UE bonus. diff --git a/app/scodoc/sco_formsemestre_exterieurs.py b/app/scodoc/sco_formsemestre_exterieurs.py index c82d176c..44eec6be 100644 --- a/app/scodoc/sco_formsemestre_exterieurs.py +++ b/app/scodoc/sco_formsemestre_exterieurs.py @@ -55,7 +55,7 @@ from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre_inscriptions from app.scodoc import sco_formsemestre_validation from app.scodoc import sco_etud -from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.codes_cursus import UE_SPORT def formsemestre_ext_create(etudid, sem_params): diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py index 024ccbf9..739ace4f 100644 --- a/app/scodoc/sco_formsemestre_inscriptions.py +++ b/app/scodoc/sco_formsemestre_inscriptions.py @@ -43,7 +43,7 @@ import app.scodoc.sco_utils as scu from app import log from app.scodoc.scolog import logdb from app.scodoc.sco_exceptions import ScoException, ScoValueError -from app.scodoc.sco_codes_parcours import UE_STANDARD, UE_SPORT, UE_TYPE_NAME +from app.scodoc.codes_cursus import UE_STANDARD, UE_SPORT, UE_TYPE_NAME import app.scodoc.notesdb as ndb from app.scodoc.TrivialFormulator import TrivialFormulator from app.scodoc import sco_find_etud diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index 5a5f8d5a..3e4446bb 100644 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -56,7 +56,7 @@ from app.scodoc import htmlutils from app.scodoc import sco_abs from app.scodoc import sco_archives from app.scodoc import sco_bulletins -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_compute_moy from app.scodoc import sco_edit_ue from app.scodoc import sco_evaluations @@ -89,14 +89,14 @@ def _build_menu_stats(formsemestre_id): "enabled": True, }, { - "title": "Graphe des parcours", - "endpoint": "notes.formsemestre_graph_parcours", + "title": "Graphe des cursus", + "endpoint": "notes.formsemestre_graph_cursus", "args": {"formsemestre_id": formsemestre_id}, "enabled": True, }, { - "title": "Codes des parcours", - "endpoint": "notes.formsemestre_suivi_parcours", + "title": "Codes des cursus", + "endpoint": "notes.formsemestre_suivi_cursus", "args": {"formsemestre_id": formsemestre_id}, "enabled": True, }, @@ -577,7 +577,7 @@ def fill_formsemestre(sem): sem["eyelink"] = "" F = sco_formations.formation_list(args={"formation_id": sem["formation_id"]})[0] sem["formation"] = F - parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"]) + parcours = codes_cursus.get_cursus_from_code(F["type_parcours"]) if sem["semestre_id"] != -1: sem["num_sem"] = f""", {parcours.SESSION_NAME} {sem["semestre_id"]}""" else: @@ -617,7 +617,7 @@ def formsemestre_description_table( F = sco_formations.formation_list(args={"formation_id": formsemestre.formation_id})[ 0 ] - parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"]) + parcours = codes_cursus.get_cursus_from_code(F["type_parcours"]) # --- Colonnes à proposer: columns_ids = ["UE", "Code", "Module"] if with_parcours: @@ -969,7 +969,7 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None if not sem: raise ScoValueError("Semestre inexistant (il a peut être été supprimé ?)") formation: Formation = sem.formation - parcours = formation.get_parcours() + parcours = formation.get_cursus() page_title = page_title or "Modules de " @@ -1268,7 +1268,7 @@ def formsemestre_tableau_modules( H.append("") - if modimpl["ue"]["type"] != sco_codes_parcours.UE_STANDARD: + if modimpl["ue"]["type"] != codes_cursus.UE_STANDARD: fontorange = " fontorange" # style css additionnel else: fontorange = "" diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index e84d5bc6..8a7f36a6 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -48,12 +48,12 @@ from app.models.validations import ( from app.models.but_validations import ApcValidationRCUE, ApcValidationAnnee from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.scolog import logdb -from app.scodoc.sco_codes_parcours import * +from app.scodoc.codes_cursus import * from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message from app.scodoc import html_sco_header from app.scodoc import sco_abs -from app.scodoc import sco_codes_parcours +from app.scodoc import codes_cursus from app.scodoc import sco_cache from app.scodoc import sco_edit_ue from app.scodoc import sco_etud @@ -179,13 +179,13 @@ def formsemestre_validation_etud_form( etud["nomprenom"], Se.parcours.SESSION_NAME_A, Se.parcours.SESSION_NAME, - Se.get_parcours_descr(), + Se.get_cursus_descr(), ) ) else: H.append( '

    Parcours de %s

    %s' - % (etud["nomprenom"], Se.get_parcours_descr()) + % (etud["nomprenom"], Se.get_cursus_descr()) ) H.append( @@ -793,7 +793,7 @@ def form_decision_manuelle(Se, formsemestre_id, etudid, desturl="", sortcol=None ) # Choix code semestre: - codes = sorted(sco_codes_parcours.CODES_JURY_SEM) + codes = sorted(codes_cursus.CODES_JURY_SEM) # fortuitement, cet ordre convient bien ! H.append( @@ -805,7 +805,7 @@ def form_decision_manuelle(Se, formsemestre_id, etudid, desturl="", sortcol=None if cod != ADC: H.append( '' - % (cod, sco_codes_parcours.CODES_EXPL[cod], cod) + % (cod, codes_cursus.CODES_EXPL[cod], cod) ) elif Se.sem["gestion_compensation"]: # traitement spécial pour ADC (compensation) @@ -845,24 +845,24 @@ def form_decision_manuelle(Se, formsemestre_id, etudid, desturl="", sortcol=None sel = "" H.append( '' - % (cod, sel, sco_codes_parcours.CODES_EXPL[cod], cod) + % (cod, sel, codes_cursus.CODES_EXPL[cod], cod) ) H.append("") # Choix code devenir - codes = list(sco_codes_parcours.DEVENIR_EXPL.keys()) + codes = list(codes_cursus.DEVENIR_EXPL.keys()) codes.sort() # fortuitement, cet ordre convient aussi bien ! if Se.sem["semestre_id"] == -1: - allowed_codes = sco_codes_parcours.DEVENIRS_MONO + allowed_codes = codes_cursus.DEVENIRS_MONO else: - allowed_codes = set(sco_codes_parcours.DEVENIRS_STD) + allowed_codes = set(codes_cursus.DEVENIRS_STD) # semestres decales ? if Se.sem["gestion_semestrielle"]: - allowed_codes = allowed_codes.union(sco_codes_parcours.DEVENIRS_DEC) + allowed_codes = allowed_codes.union(codes_cursus.DEVENIRS_DEC) # n'autorise les codes NEXT2 que si semestres décalés et s'il ne manque qu'un semestre avant le n+2 if Se.can_jump_to_next2(): - allowed_codes = allowed_codes.union(sco_codes_parcours.DEVENIRS_NEXT2) + allowed_codes = allowed_codes.union(codes_cursus.DEVENIRS_NEXT2) H.append( 'Devenir: