Parcours BUT avec UE communes mais différentes #487

Closed
opened 2022-09-05 14:52:31 +02:00 by viennet · 1 comment
Owner

** Work in progress, à suivre **

Dans certaines spécialités, les parcours du BUT ont des compétences en commun, mais associées à des UE qui n'ont pas le même contenu: soit des ressources/SAÉ un peu différents, soit des coefficients différents, soit encore des coef. de RCUE différents.

Par ailleurs, ces UE peuvent avoir des codes Apogée différents.

Or, en scoDoc 9.3, on a une bijection UE <-> Niveau de compétence, donc une compétence ne peut être associée qu'à une seule UE.

Que faut-il changer pour implémenter ce cas ?

  • UI: le menu dans ue_table (form_ue_choix_niveau), choisir le parcours (commun ou l'un de ceux du ref.), et le niveau de ce parcours (2 menus dynamiques liés).

  • BD: set_ue_niveau_competence: vérifiait l'unicité de l'association (ue, niveau). Retirer ce test et vérifier que (niveau, parcours) est unique parmi les UEs de ce semestre de cette formation.

  • Pour les jurys, il faut dresser la liste des UE suivies par l'étudiant. C'est fait dans DecisionsProposeesAnnee.compute_ues_annee() à partir du parcours, via formation.query_ues_parcour(), qui se base sur la requête:

UniteEns.query.filter_by(formation=self).filter(
	UniteEns.niveau_competence_id == ApcNiveau.id,
	UniteEns.type == UE_STANDARD,
	ApcParcoursNiveauCompetence.competence_id == ApcNiveau.competence_id,
    ApcParcoursNiveauCompetence.annee_parcours_id == ApcAnneeParcours.id,
    ApcAnneeParcours.parcours_id == parcour.id
)

La logique doit changer: ici UniteEns.niveau_competence_id == ApcNiveau.idva ramener plusieurs UE pour le même niveau. Il faudrait plutôt lister les niveaux à valider, puis chercher des UE pour ce faire.

Comment savoir quelles UEs associer à chaque parcours ?

Actuellement on a une simple one-to-many, dans la classe UniteEns:

  niveau_competence_id = db.Column(db.Integer, db.ForeignKey("apc_niveau.id"))
  niveau_competence = db.relationship("ApcNiveau", back_populates="ues")

Si les UE sont associées à un (et un seul) parcours, ou communes, on peut retrouver les UEs associées à un parcours:

UniteEns.query.filter_by(formation=self, (UniteEns.parcours_id == parcour.id) | (UniteEns.parcours_id == None)

Si UniteEns.parcours_id est None (défaut), l'UE doit être validée dans tous les parcours.

** Work in progress, à suivre **

** Work in progress, à suivre ** Dans certaines spécialités, les parcours du BUT ont des compétences en commun, mais associées à des UE qui n'ont pas le même contenu: soit des ressources/SAÉ un peu différents, soit des coefficients différents, soit encore des coef. de RCUE différents. Par ailleurs, ces UE peuvent avoir des codes Apogée différents. Or, en scoDoc 9.3, on a une bijection UE <-> Niveau de compétence, donc une compétence ne peut être associée qu'à une seule UE. ### Que faut-il changer pour implémenter ce cas ? - UI: le menu dans `ue_table` (`form_ue_choix_niveau`), choisir le parcours (commun ou l'un de ceux du ref.), et le niveau de ce parcours (2 menus dynamiques liés). - BD: `set_ue_niveau_competence`: vérifiait l'unicité de l'association `(ue, niveau)`. Retirer ce test et vérifier que `(niveau, parcours)` est unique parmi les UEs de ce semestre de cette formation. - Pour les jurys, il faut dresser la liste des UE suivies par l'étudiant. C'est fait dans `DecisionsProposeesAnnee.compute_ues_annee()` à partir du parcours, via `formation.query_ues_parcour()`, qui se base sur la requête: ```py UniteEns.query.filter_by(formation=self).filter( UniteEns.niveau_competence_id == ApcNiveau.id, UniteEns.type == UE_STANDARD, ApcParcoursNiveauCompetence.competence_id == ApcNiveau.competence_id, ApcParcoursNiveauCompetence.annee_parcours_id == ApcAnneeParcours.id, ApcAnneeParcours.parcours_id == parcour.id ) ``` La logique doit changer: ici `UniteEns.niveau_competence_id == ApcNiveau.id`va ramener plusieurs UE pour le même niveau. Il faudrait plutôt lister les niveaux à valider, puis chercher des UE pour ce faire. ### Comment savoir quelles UEs associer à chaque parcours ? Actuellement on a une simple one-to-many, dans la classe `UniteEns`: ```py niveau_competence_id = db.Column(db.Integer, db.ForeignKey("apc_niveau.id")) niveau_competence = db.relationship("ApcNiveau", back_populates="ues") ``` Si les UE sont associées à *un* (et *un seul*) parcours, ou communes, on peut retrouver les UEs associées à un parcours: ```py UniteEns.query.filter_by(formation=self, (UniteEns.parcours_id == parcour.id) | (UniteEns.parcours_id == None) ``` Si `UniteEns.parcours_id` est None (défaut), l'UE doit être validée dans tous les parcours. ** Work in progress, à suivre **
viennet changed title from Parcours BUT avec Ue communes mais différentes to Parcours BUT avec UE communes mais différentes 2022-09-05 15:00:16 +02:00
viennet added this to the ScoDoc 9.3 milestone 2022-10-06 17:39:02 +02:00
Author
Owner

Intégré en 9.3.60.

Reste à vérifier que les jury se passent bien.

Intégré en 9.3.60. Reste à vérifier que les jury se passent bien.
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#487
No description provided.