diff --git a/app/but/jury_but_view.py b/app/but/jury_but_view.py index 20bd249ae..b82007b86 100644 --- a/app/but/jury_but_view.py +++ b/app/but/jury_but_view.py @@ -256,7 +256,7 @@ def _gen_but_niveau_ue( return f"""
-
{ue.acronyme}
+
{ue.acronyme}
{moy_ue_str}
{scoplement} diff --git a/app/pe/pe_etudiant.py b/app/pe/pe_etudiant.py index cdf6a5ecd..9bcb6c495 100644 --- a/app/pe/pe_etudiant.py +++ b/app/pe/pe_etudiant.py @@ -487,7 +487,6 @@ def arret_de_formation(etud: Identite, cosemestres: list[FormSemestre]) -> bool: TODO:: A reprendre pour le cas des étudiants à l'étranger TODO:: A reprendre si BUT avec semestres décalés """ - # Les semestres APC de l'étudiant semestres = get_semestres_apc(etud) semestres_apc = {sem.semestre_id: sem for sem in semestres} diff --git a/app/scodoc/sco_edit_apc.py b/app/scodoc/sco_edit_apc.py index 3bd945952..a90d37e57 100644 --- a/app/scodoc/sco_edit_apc.py +++ b/app/scodoc/sco_edit_apc.py @@ -126,53 +126,59 @@ def html_edit_formation_apc( UniteEns.type != codes_cursus.UE_SPORT, ).first() H += [ - render_template( - "pn/form_mods.j2", - formation=formation, - titre=f"Ressources du S{semestre_idx}", - create_element_msg="créer une nouvelle ressource", - # matiere_parent=matiere_parent, - modules=ressources_in_sem, - module_type=ModuleType.RESSOURCE, - editable=editable, - tag_editable=tag_editable, - icons=icons, - scu=scu, - semestre_id=semestre_idx, - ) - if ues_by_sem[semestre_idx].count() > 0 - else "", - render_template( - "pn/form_mods.j2", - formation=formation, - titre=f"Situations d'Apprentissage et d'Évaluation (SAÉs) S{semestre_idx}", - create_element_msg="créer une nouvelle SAÉ", - # matiere_parent=matiere_parent, - modules=saes_in_sem, - module_type=ModuleType.SAE, - editable=editable, - tag_editable=tag_editable, - icons=icons, - scu=scu, - semestre_id=semestre_idx, - ) - if ues_by_sem[semestre_idx].count() > 0 - else "", - render_template( - "pn/form_mods.j2", - formation=formation, - titre=f"Autres modules (non BUT) du S{semestre_idx}", - create_element_msg="créer un nouveau module", - modules=other_modules_in_sem, - module_type=ModuleType.STANDARD, - editable=editable, - tag_editable=tag_editable, - icons=icons, - scu=scu, - semestre_id=semestre_idx, - ) - if ues_by_sem[semestre_idx].count() > 0 - else """créer une UE pour pouvoir ajouter des modules""", + ( + render_template( + "pn/form_mods.j2", + formation=formation, + titre=f"Ressources du S{semestre_idx}", + create_element_msg="créer une nouvelle ressource", + # matiere_parent=matiere_parent, + modules=ressources_in_sem, + module_type=ModuleType.RESSOURCE, + editable=editable, + tag_editable=tag_editable, + icons=icons, + scu=scu, + semestre_id=semestre_idx, + ) + if ues_by_sem[semestre_idx].count() > 0 + else "" + ), + ( + render_template( + "pn/form_mods.j2", + formation=formation, + titre=f"Situations d'Apprentissage et d'Évaluation (SAÉs) S{semestre_idx}", + create_element_msg="créer une nouvelle SAÉ", + # matiere_parent=matiere_parent, + modules=saes_in_sem, + module_type=ModuleType.SAE, + editable=editable, + tag_editable=tag_editable, + icons=icons, + scu=scu, + semestre_id=semestre_idx, + ) + if ues_by_sem[semestre_idx].count() > 0 + else "" + ), + ( + render_template( + "pn/form_mods.j2", + formation=formation, + titre=f"Autres modules (non BUT) du S{semestre_idx}", + create_element_msg="créer un nouveau module", + modules=other_modules_in_sem, + module_type=ModuleType.STANDARD, + editable=editable, + tag_editable=tag_editable, + icons=icons, + scu=scu, + semestre_id=semestre_idx, + ) + if ues_by_sem[semestre_idx].count() > 0 + else """créer une UE pour pouvoir ajouter des modules""" + ), ] return "\n".join(H) @@ -202,7 +208,7 @@ def html_ue_infos(ue): ) return render_template( "pn/ue_infos.j2", - titre=f"UE {ue.acronyme} {ue.titre}", + titre=f"UE {ue.acronyme} {ue.titre or ''}", ue=ue, formsemestres=formsemestres, nb_etuds_valid_ue=nb_etuds_valid_ue, diff --git a/app/scodoc/sco_edit_matiere.py b/app/scodoc/sco_edit_matiere.py index 277da08e6..1a212a7ad 100644 --- a/app/scodoc/sco_edit_matiere.py +++ b/app/scodoc/sco_edit_matiere.py @@ -104,7 +104,7 @@ def matiere_create(ue_id=None): default_numero = max([mat.numero for mat in ue.matieres] or [9]) + 1 H = [ html_sco_header.sco_header(page_title="Création d'une matière"), - f"""

Création d'une matière dans l'UE {ue.titre} ({ue.acronyme})

+ f"""

Création d'une matière dans l'UE {ue.titre or ''} ({ue.acronyme})

Les matières sont des groupes de modules dans une UE d'une formation donnée. Les matières servent surtout pour la présentation (bulletins, etc) mais n'ont pas de rôle dans le calcul diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py index b7d6fab4e..c5b106a67 100644 --- a/app/scodoc/sco_edit_module.py +++ b/app/scodoc/sco_edit_module.py @@ -85,7 +85,7 @@ _moduleEditor = ndb.EditableTable( "heures_tp": ndb.float_null_is_zero, "numero": ndb.int_null_is_zero, "coefficient": ndb.float_null_is_zero, - "module_type": ndb.int_null_is_zero + "module_type": ndb.int_null_is_zero, #'ects' : ndb.float_null_is_null }, ) @@ -387,14 +387,16 @@ def module_edit( "scodoc/help/modules.j2", is_apc=is_apc, semestre_id=semestre_id, - formsemestres=FormSemestre.query.filter( - ModuleImpl.formsemestre_id == FormSemestre.id, - ModuleImpl.module_id == module_id, - ) - .order_by(FormSemestre.date_debut) - .all() - if not create - else None, + formsemestres=( + FormSemestre.query.filter( + ModuleImpl.formsemestre_id == FormSemestre.id, + ModuleImpl.module_id == module_id, + ) + .order_by(FormSemestre.date_debut) + .all() + if not create + else None + ), create=create, ), ] @@ -413,9 +415,11 @@ def module_edit( } if module: module_types |= { - scu.ModuleType(module.module_type) - if module.module_type - else scu.ModuleType.STANDARD + ( + scu.ModuleType(module.module_type) + if module.module_type + else scu.ModuleType.STANDARD + ) } # Numéro du module # cherche le numero adéquat (pour placer le module en fin de liste) @@ -571,15 +575,17 @@ def module_edit( "input_type": "menu", "title": "Rattachement :" if is_apc else "Matière :", "explanation": ( - "UE de rattachement, utilisée notamment pour les malus" - + ( - " (module utilisé, ne peut pas être changé de semestre)" - if in_use - else "" + ( + "UE de rattachement, utilisée notamment pour les malus" + + ( + " (module utilisé, ne peut pas être changé de semestre)" + if in_use + else "" + ) ) - ) - if is_apc - else "un module appartient à une seule matière.", + if is_apc + else "un module appartient à une seule matière." + ), "labels": mat_names, "allowed_values": ue_mat_ids, "enabled": unlocked, @@ -733,7 +739,7 @@ def module_edit( "title": f"""{scu.EMO_WARNING } L'UE {ue.acronyme} {ue.titre} + }">{ue.acronyme} {ue.titre or ''} n'est pas associée à un niveau de compétences """, }, @@ -766,12 +772,14 @@ def module_edit( request.base_url, scu.get_request_args(), descr, - html_foot_markup=f"""

""" - if not create - else "", + if not create + else "" + ), initvalues=module_dict if module else {}, submitlabel="Modifier ce module" if module else "Créer ce module", cancelbutton="Annuler", @@ -814,7 +822,7 @@ def module_edit( tf[2]["matiere_id"] = matiere.id else: matiere_id = sco_edit_matiere.do_matiere_create( - {"ue_id": ue.id, "titre": ue.titre, "numero": 1}, + {"ue_id": ue.id, "titre": ue.titre or "", "numero": 1}, ) tf[2]["matiere_id"] = matiere_id diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index a02811c2a..9989f7e1b 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -167,7 +167,7 @@ def do_ue_delete(ue: UniteEns, delete_validations=False, force=False): if not ue.can_be_deleted(): raise ScoNonEmptyFormationObject( f"UE (id={ue.id}, dud)", - msg=ue.titre, + msg=f"{ue.titre or ''} ({ue.acronyme})", dest_url=url_for( "notes.ue_table", scodoc_dept=g.scodoc_dept, @@ -639,8 +639,8 @@ def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False): ) if not ue.can_be_deleted(): raise ScoNonEmptyFormationObject( - f"UE", - msg=ue.titre, + "UE", + msg=f"{ue.titre or ''} ({ue.acronyme})", dest_url=url_for( "notes.ue_table", scodoc_dept=g.scodoc_dept, @@ -651,7 +651,7 @@ def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False): if not dialog_confirmed: return scu.confirm_dialog( - f"

Suppression de l'UE {ue.titre} ({ue.acronyme})

", + f"

Suppression de l'UE {ue.titre or ''} ({ue.acronyme})

", dest_url="", parameters={"ue_id": ue.id}, cancel_url=url_for( @@ -1452,7 +1452,7 @@ def ue_sharing_code(ue_code: str = "", ue_id: int = None, hide_ue_id: int = None H.append("
{% endif %} {% if editable and not ue.is_locked() %} - modifier {% endif %} @@ -100,8 +100,8 @@ {% if editable %}