############################################################################## # Module "Avis de poursuite d'étude" # conçu et développé par Cléo Baras (IUT de Grenoble) ############################################################################## """ Created on 01-2024 @author: barasc """ import app.pe.pe_comp as pe_comp import app.pe.rcss.pe_rcf import app.pe.rcss.rcss_constantes from app.models import FormSemestre from app.pe import pe_sxtag, pe_affichage from app.pe.pe_etudiant import EtudiantsJuryPE, get_dernier_semestre_en_date import app.pe.rcss.pe_rcs as pe_rcs import app.pe.rcss.pe_rcf as pe_rcf class RCRCF: """Modélise les RCF d'étudiants suivis par un étudiant dans le cadre d'un RCS donné (par ex: 3S=S1+S2+S3). Pour rappel : un RCF (par ex. S1) combine les semestres 1 qu'a suivi l'étudiant pour valider son S1 (1 si étudiant standard, 2 si redoublant). Le RCRCF 3S est donc le regroupement du RCF S1 + RCF S2 + RCF S3. Il est identifié par le formsemestre de S3 marquant la fin du regroupement. Args: nom_rcs: Un nom du RCS (par ex: '5S') semestre_final: Le semestre final du RCS """ def __init__(self, nom_rcs: str, semestre_final: FormSemestre): pe_rcs.RCS.__init__(self, nom_rcs, semestre_final) self.rcfs_aggreges: dict[(str, int) : pe_sxtag.SxTag] = {} """Les RCFs à aggréger""" def add_rcfs_a_aggreger(self, rcfs: dict[(str, int): app.pe.rcss.pe_rcf.RCF]): """Ajout des RCFs aux RCFS à regrouper Args: rcfs: Dictionnaire ``{(str,fid): RCF}`` à ajouter """ self.rcfs_aggreges = self.rcfs_aggreges | rcfs def get_repr(self, verbose=True) -> str: """Représentation textuelle d'un RCSF basé sur ses RCF aggrégés""" title = f"""{self.__class__.__name__}{pe_rcs.RCS.__str__(self)}""" if verbose: noms = [] for rcf_id, rcf in self.rcfs_aggreges.items(): noms.append(rcf.get_repr(verbose=False)) if noms: title += " <<" + "+".join(noms) + ">>" else: title += " <>" return title