forked from ScoDoc/ScoDoc
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
##############################################################################
|
|
# 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 += " <<vide>>"
|
|
return title
|
|
|
|
|