Modifie le calcul de l'ensemble des UE si aucun parcours BUT n'est coché: prend toutes.
This commit is contained in:
parent
0d9338dc0a
commit
e59fce5f6b
@ -257,10 +257,14 @@ class FormSemestre(db.Model):
|
||||
if self.formation.get_parcours().APC_SAE:
|
||||
sem_ues = UniteEns.query.filter_by(
|
||||
formation=self.formation, semestre_idx=self.semestre_id
|
||||
).filter(
|
||||
(UniteEns.parcour == None)
|
||||
| (UniteEns.parcour_id.in_([p.id for p in self.parcours]))
|
||||
)
|
||||
if self.parcours:
|
||||
# Prend toutes les UE de l'un des parcours du sem., ou déclarées sans parcours
|
||||
sem_ues = sem_ues.filter(
|
||||
(UniteEns.parcour == None)
|
||||
| (UniteEns.parcour_id.in_([p.id for p in self.parcours]))
|
||||
)
|
||||
# si le sem. ne coche aucun parcours, prend toutes les UE
|
||||
else:
|
||||
sem_ues = db.session.query(UniteEns).filter(
|
||||
ModuleImpl.formsemestre_id == self.id,
|
||||
|
@ -553,7 +553,10 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N
|
||||
str(parcour.id) for parcour in ref_comp.parcours
|
||||
],
|
||||
"explanation": """Parcours proposés dans ce semestre.
|
||||
S'il s'agit d'un semestre de "tronc commun", ne pas indiquer de parcours.""",
|
||||
S'il s'agit d'un semestre de "tronc commun", ne pas indiquer de parcours.
|
||||
Attention, si aucun parcours n'est coché, toutes les UEs du
|
||||
programme seront considérées, quel que soit leur parcours.
|
||||
""",
|
||||
},
|
||||
)
|
||||
]
|
||||
|
@ -40,7 +40,7 @@ from app import log
|
||||
from app.comp import res_sem
|
||||
from app.comp.res_common import ResultatsSemestre
|
||||
from app.comp.res_compat import NotesTableCompat
|
||||
from app.models import Evaluation, Module, ModuleImpl, NotesNotes
|
||||
from app.models import Evaluation, Formation, Module, ModuleImpl, NotesNotes
|
||||
from app.models.etudiants import Identite
|
||||
from app.models.formsemestre import FormSemestre
|
||||
import app.scodoc.sco_utils as scu
|
||||
@ -963,12 +963,12 @@ def html_expr_diagnostic(diagnostics):
|
||||
return "".join(H)
|
||||
|
||||
|
||||
def formsemestre_status_head(formsemestre_id=None, page_title=None):
|
||||
def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None):
|
||||
"""En-tête HTML des pages "semestre" """
|
||||
sem = FormSemestre.query.get(formsemestre_id)
|
||||
sem: FormSemestre = FormSemestre.query.get(formsemestre_id)
|
||||
if not sem:
|
||||
raise ScoValueError("Semestre inexistant (il a peut être été supprimé ?)")
|
||||
formation = sem.formation
|
||||
formation: Formation = sem.formation
|
||||
parcours = formation.get_parcours()
|
||||
|
||||
page_title = page_title or "Modules de "
|
||||
@ -996,11 +996,16 @@ def formsemestre_status_head(formsemestre_id=None, page_title=None):
|
||||
}</tt></b>)"""
|
||||
)
|
||||
H.append("</td></tr>")
|
||||
if sem.parcours:
|
||||
if formation.is_apc():
|
||||
# Affiche les parcours BUT cochés. Si aucun, tous ceux du référentiel.
|
||||
sem_parcours = sem.parcours or (
|
||||
formation.referentiel_competence
|
||||
and formation.referentiel_competence.parcours
|
||||
)
|
||||
H.append(
|
||||
f"""
|
||||
<tr><td class="fichetitre2">Parcours: </td>
|
||||
<td style="color: blue;">{', '.join(parcours.code for parcours in sem.parcours)}</td>
|
||||
<td style="color: blue;">{', '.join(parcours.code for parcours in sem_parcours)}</td>
|
||||
</tr>
|
||||
"""
|
||||
)
|
||||
|
@ -130,22 +130,29 @@ FormSemestres:
|
||||
|
||||
Etudiants:
|
||||
Aaaaa:
|
||||
prenom: Étudiant
|
||||
prenom: Étudiant_SEE
|
||||
civilite: M
|
||||
formsemestres:
|
||||
S1_SEE:
|
||||
parcours: SEE
|
||||
notes_modules:
|
||||
R1.01: 12
|
||||
R1.SEE.11: 15
|
||||
notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
|
||||
"SAÉ 1.01": 8 # UE11 ratée
|
||||
"SAÉ 1.02": 9 # UE12 ratée
|
||||
"SAÉ 1.SEE.03": 18 # UE13 => sera capitalisée
|
||||
"SAÉ 1.SEE.04": 7 # UE14 ratée
|
||||
deca:
|
||||
codes_min: [ ]
|
||||
S2_SEE:
|
||||
parcours: SEE
|
||||
notes_modules: # on joue avec les SAE seulement
|
||||
"SAE 21": 9 # UE21 ratée, pas le niveau de comp.
|
||||
"SAE22": 12 # UE22 ok, emporte le niveau par compensation
|
||||
"SAE23.SEE": 19 # UE23 ok
|
||||
"SAE24.SEE": 12 # UE24 ok, mais ne compense pas
|
||||
S3:
|
||||
parcours: SEE
|
||||
Bbbbb:
|
||||
prenom: Étudiante
|
||||
prenom: Étudiante_BMB
|
||||
civilite: F
|
||||
formsemestres:
|
||||
S1_BMB:
|
||||
|
@ -33,7 +33,7 @@ def test_but_jury_S1(test_client):
|
||||
assert deca.formsemestre_pair is None # jury de S1, pas de S2
|
||||
assert deca.rcues_annee == [] # S1, pas de RCUEs
|
||||
assert deca.inscription_etat == scu.INSCRIT
|
||||
assert deca.inscription_etat_impair is None
|
||||
assert deca.inscription_etat_impair == scu.INSCRIT
|
||||
assert deca.parcour == formsemestre.parcours[0] # un seul parcours dans ce sem.
|
||||
assert formsemestre.query_ues().all() == deca.ues_impair
|
||||
nb_ues = formsemestre.query_ues().count()
|
||||
@ -48,7 +48,9 @@ def test_but_jury_S3(test_client):
|
||||
app.set_sco_dept(DEPT)
|
||||
doc = sty.setup_from_yaml("tests/unit/cursus_but_gb.yaml")
|
||||
formsemestre: FormSemestre = FormSemestre.query.filter_by(titre="S3").first()
|
||||
etud: Identite = formsemestre.etuds.filter_by(nom="See1").first() # du parcours SEE
|
||||
etud: Identite = formsemestre.etuds.filter_by(
|
||||
prenom="Étudiant_SEE"
|
||||
).first() # du parcours SEE
|
||||
assert etud
|
||||
deca = DecisionsProposeesAnnee(etud, formsemestre)
|
||||
assert len(deca.niveaux_competences) == 5 # 5 compétences dans ce parcours
|
||||
|
Loading…
Reference in New Issue
Block a user