############################################################################## # ScoDoc # Copyright (c) 1999 - 2024 Emmanuel Viennet. All rights reserved. # See LICENSE ############################################################################## """ Edition associations UE <-> Ref. Compétence """ from flask import g, url_for from app.models import ApcReferentielCompetences, UniteEns from app.scodoc import codes_cursus def form_ue_choix_parcours(ue: UniteEns) -> str: """Form. HTML pour associer une UE à ses parcours. Le menu select lui même est vide et rempli en JS par appel à get_ue_niveaux_options_html """ if ue.type != codes_cursus.UE_STANDARD: return "" ref_comp = ue.formation.referentiel_competence if ref_comp is None: return f"""
Pas de référentiel de compétence associé à cette formation !
associer un référentiel de compétence
""" H = [ """
Parcours du BUT
""" ] # Choix des parcours ue_pids = [p.id for p in ue.parcours] H.append( """
Cocher tous les parcours dans lesquels cette UE est utilisée, même si vous n'offrez pas ce parcours dans votre département. Sans quoi, les UEs de Tronc Commun ne seront pas reconnues. Ne cocher aucun parcours est équivalent à tous les cocher.
""" ) ects_differents = { ue.get_ects(parcour, only_parcours=True) for parcour in ref_comp.parcours } != {None} for parcour in ref_comp.parcours: ects_parcour_txt = ( f" ({ue.get_ects(parcour):.3g} ects)" if ects_differents else "" ) H.append( f"""""" ) H.append("""
""") # H.append( f"""
""" ) return "\n".join(H) def get_ue_niveaux_options_html(ue: UniteEns) -> str: """fragment html avec les options du menu de sélection du niveau de compétences associé à une UE. Si l'UE n'a pas de parcours associé: présente les niveaux de tous les parcours. Si l'UE a un parcours: seulement les niveaux de ce parcours. """ ref_comp: ApcReferentielCompetences = ue.formation.referentiel_competence if ref_comp is None: return "" # Les niveaux: annee = ue.annee() # 1, 2, 3 parcours, niveaux_by_parcours = ref_comp.get_niveaux_by_parcours(annee, ue.parcours) # Les niveaux déjà associés à d'autres UE du même semestre autres_ues = ue.formation.ues.filter_by(semestre_idx=ue.semestre_idx) niveaux_autres_ues = { oue.niveau_competence_id for oue in autres_ues if oue.id != ue.id } options = [] if niveaux_by_parcours["TC"]: # TC pour Tronc Commun options.append("""""") for n in niveaux_by_parcours["TC"]: options.append( f"""""" ) options.append("""""") for parcour in parcours: if len(niveaux_by_parcours[parcour.id]): options.append(f"""""") for n in niveaux_by_parcours[parcour.id]: if n.id in niveaux_autres_ues: disabled = "disabled" else: disabled = "" options.append( f"""""" ) options.append("""""") return ( f"""""" + "\n".join(options) )