forked from ScoDoc/ScoDoc
Affichage des ECTS sur validation_rcues et parcour_formation. Closes 656.
This commit is contained in:
parent
85005419ae
commit
66b8542d56
@ -461,7 +461,7 @@ def formsemestre_warning_apc_setup(
|
|||||||
}
|
}
|
||||||
if niveaux_ids != ues_niveaux_ids:
|
if niveaux_ids != ues_niveaux_ids:
|
||||||
H.append(
|
H.append(
|
||||||
f"""Parcours {parcour.code if parcour else "Tronc commun"} :
|
f"""Parcours {parcour.code if parcour else "Tronc commun"} :
|
||||||
{len(ues_niveaux_ids)} UE avec niveaux
|
{len(ues_niveaux_ids)} UE avec niveaux
|
||||||
mais {len(niveaux_ids)} niveaux à valider !
|
mais {len(niveaux_ids)} niveaux à valider !
|
||||||
"""
|
"""
|
||||||
@ -473,7 +473,7 @@ def formsemestre_warning_apc_setup(
|
|||||||
<ul>
|
<ul>
|
||||||
<li>{ '</li><li>'.join(H) }</li>
|
<li>{ '</li><li>'.join(H) }</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="help">Vérifiez les parcours cochés pour ce semestre,
|
<p class="help">Vérifiez les parcours cochés pour ce semestre,
|
||||||
et les associations entre UE et niveaux <a class="stdlink" href="{
|
et les associations entre UE et niveaux <a class="stdlink" href="{
|
||||||
url_for("notes.parcour_formation", scodoc_dept=g.scodoc_dept, formation_id=formsemestre.formation.id)
|
url_for("notes.parcour_formation", scodoc_dept=g.scodoc_dept, formation_id=formsemestre.formation.id)
|
||||||
}">dans la formation.</a>
|
}">dans la formation.</a>
|
||||||
@ -497,7 +497,9 @@ def ue_associee_au_niveau_du_parcours(
|
|||||||
return ues[0] if ues else None
|
return ues[0] if ues else None
|
||||||
|
|
||||||
|
|
||||||
def parcour_formation_competences(parcour: ApcParcours, formation: Formation) -> list:
|
def parcour_formation_competences(
|
||||||
|
parcour: ApcParcours, formation: Formation
|
||||||
|
) -> tuple[list[dict], float]:
|
||||||
"""
|
"""
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -514,7 +516,8 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) ->
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
ects_parcours (somme des ects des UEs associées)
|
||||||
"""
|
"""
|
||||||
refcomp: ApcReferentielCompetences = formation.referentiel_competence
|
refcomp: ApcReferentielCompetences = formation.referentiel_competence
|
||||||
|
|
||||||
@ -538,7 +541,7 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) ->
|
|||||||
if len(niveaux) > 0:
|
if len(niveaux) > 0:
|
||||||
if len(niveaux) > 1:
|
if len(niveaux) > 1:
|
||||||
log(
|
log(
|
||||||
f"""_niveau_ues: plus d'un niveau pour {competence}
|
f"""_niveau_ues: plus d'un niveau pour {competence}
|
||||||
annee {annee} {("parcours " + parcour.code) if parcour else ""}"""
|
annee {annee} {("parcours " + parcour.code) if parcour else ""}"""
|
||||||
)
|
)
|
||||||
niveau = niveaux[0]
|
niveau = niveaux[0]
|
||||||
@ -598,4 +601,17 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) ->
|
|||||||
else refcomp.competences.order_by(ApcCompetence.numero)
|
else refcomp.competences.order_by(ApcCompetence.numero)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
return competences
|
ects_parcours = sum(
|
||||||
|
sum(
|
||||||
|
(ni["ue_impair"].ects or 0) if ni["ue_impair"] else 0
|
||||||
|
for ni in cp["niveaux"].values()
|
||||||
|
)
|
||||||
|
for cp in competences
|
||||||
|
) + sum(
|
||||||
|
sum(
|
||||||
|
(ni["ue_pair"].ects or 0) if ni["ue_pair"] else 0
|
||||||
|
for ni in cp["niveaux"].values()
|
||||||
|
)
|
||||||
|
for cp in competences
|
||||||
|
)
|
||||||
|
return competences, ects_parcours
|
||||||
|
@ -43,16 +43,20 @@ def validation_rcues(etud: Identite, formsemestre: FormSemestre, edit: bool = Fa
|
|||||||
raise ScoNoReferentielCompetences(formation=formation)
|
raise ScoNoReferentielCompetences(formation=formation)
|
||||||
parcour = formsemestre.etuds_inscriptions[etud.id].parcour
|
parcour = formsemestre.etuds_inscriptions[etud.id].parcour
|
||||||
# Si non inscrit à un parcours, prend toutes les compétences
|
# Si non inscrit à un parcours, prend toutes les compétences
|
||||||
competences_parcour = cursus_but.parcour_formation_competences(parcour, formation)
|
competences_parcour, ects_parcours = cursus_but.parcour_formation_competences(
|
||||||
|
parcour, formation
|
||||||
|
)
|
||||||
|
|
||||||
ue_validation_by_niveau = get_ue_validation_by_niveau(refcomp, etud)
|
ue_validation_by_niveau = get_ue_validation_by_niveau(refcomp, etud)
|
||||||
rcue_validation_by_niveau = get_rcue_validation_by_niveau(refcomp, etud)
|
rcue_validation_by_niveau = get_rcue_validation_by_niveau(refcomp, etud)
|
||||||
ects_total = sum((v.ects() for v in ue_validation_by_niveau.values()))
|
ects_acquis = sum((v.ects() for v in ue_validation_by_niveau.values()))
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"but/validation_rcues.j2",
|
"but/validation_rcues.j2",
|
||||||
competences_parcour=competences_parcour,
|
competences_parcour=competences_parcour,
|
||||||
edit=edit,
|
edit=edit,
|
||||||
ects_total=ects_total,
|
ects_acquis=ects_acquis,
|
||||||
|
ects_parcours=ects_parcours,
|
||||||
formation=formation,
|
formation=formation,
|
||||||
parcour=parcour,
|
parcour=parcour,
|
||||||
rcue_validation_by_niveau=rcue_validation_by_niveau,
|
rcue_validation_by_niveau=rcue_validation_by_niveau,
|
||||||
|
@ -171,10 +171,16 @@ select.validation_rcue {
|
|||||||
margin-left: 32px;
|
margin-left: 32px;
|
||||||
}
|
}
|
||||||
div.recap_ects, div.link_edit {
|
div.recap_ects, div.link_edit {
|
||||||
|
margin-top: 8px;
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
div.recap_ects {
|
||||||
|
background-color: var(--col-c3-2);
|
||||||
|
padding: 4px;
|
||||||
}
|
}
|
||||||
.link_edit a {
|
.link_edit a {
|
||||||
padding-right: 48px;
|
padding-right: 48px;
|
||||||
}
|
}
|
||||||
|
@ -51,19 +51,19 @@
|
|||||||
{% for parc in formation.referentiel_competence.parcours %}
|
{% for parc in formation.referentiel_competence.parcours %}
|
||||||
<div class="parc {{'focus' if parcour and parc.id == parcour.id else ''}}">
|
<div class="parc {{'focus' if parcour and parc.id == parcour.id else ''}}">
|
||||||
<a href="{{
|
<a href="{{
|
||||||
url_for('notes.parcour_formation', scodoc_dept=g.scodoc_dept,
|
url_for('notes.parcour_formation', scodoc_dept=g.scodoc_dept,
|
||||||
parcour_id=parc.id, formation_id=formation.id )
|
parcour_id=parc.id, formation_id=formation.id )
|
||||||
}}">{{parc.code}}</a>
|
}}">{{parc.code}}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<div class="link">
|
<div class="link">
|
||||||
<a class="stdlink" target="_blank" rel="noopener noreferrer" href="{{
|
<a class="stdlink" target="_blank" rel="noopener noreferrer" href="{{
|
||||||
url_for('notes.refcomp_show',
|
url_for('notes.refcomp_show',
|
||||||
scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id )
|
scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id )
|
||||||
}}">référentiel de compétences</a>
|
}}">référentiel de compétences</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="link"><a class="stdlink" href="{{
|
<div class="link"><a class="stdlink" href="{{
|
||||||
url_for('notes.ue_table',
|
url_for('notes.ue_table',
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=formation.id )
|
scodoc_dept=g.scodoc_dept, formation_id=formation.id )
|
||||||
}}">formation</a>
|
}}">formation</a>
|
||||||
</div>
|
</div>
|
||||||
@ -83,7 +83,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="niveaux">
|
<div class="niveaux">
|
||||||
{% for annee, niv in comp['niveaux'].items() %}
|
{% for annee, niv in comp['niveaux'].items() %}
|
||||||
<div class="niveau comp-c{{color_idx}}-{{annee}}"
|
<div class="niveau comp-c{{color_idx}}-{{annee}}"
|
||||||
style="--color: var(--col-c{{color_idx}}-{{annee}});">
|
style="--color: var(--col-c{{color_idx}}-{{annee}});">
|
||||||
<div class="titre_niveau n{{annee}}">
|
<div class="titre_niveau n{{annee}}">
|
||||||
<span class="parcs">
|
<span class="parcs">
|
||||||
@ -112,6 +112,9 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="recap_ects">
|
||||||
|
{{"%g"|format(ects_parcours)}} ECTS dans ce parcours.
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div>
|
<div>
|
||||||
Choisissez un parcours...
|
Choisissez un parcours...
|
||||||
@ -120,20 +123,20 @@ Choisissez un parcours...
|
|||||||
|
|
||||||
|
|
||||||
{% if parcour %}
|
{% if parcour %}
|
||||||
<div class="help">
|
<div class="help">
|
||||||
|
|
||||||
<p> Cette page représente le parcours <span class="parc">{{parcour.code}}</span>
|
<p> Cette page représente le parcours <span class="parc">{{parcour.code}}</span>
|
||||||
du référentiel de compétence {{formation.referentiel_competence.specialite}}, et permet
|
du référentiel de compétence {{formation.referentiel_competence.specialite}}, et permet
|
||||||
d'associer à chaque semestre d'un niveau de compétence une UE de la formation
|
d'associer à chaque semestre d'un niveau de compétence une UE de la formation
|
||||||
<a class="stdlink"
|
<a class="stdlink"
|
||||||
href="{{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=formation.id )
|
href="{{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=formation.id )
|
||||||
}}">{{formation.html()}}
|
}}">{{formation.html()}}
|
||||||
</a>.</p>
|
</a>.</p>
|
||||||
|
|
||||||
<p>Le symbole <span class="parc">TC</span> désigne un niveau du tronc commun
|
<p>Le symbole <span class="parc">TC</span> désigne un niveau du tronc commun
|
||||||
(c'est à dire présent dans tous les parcours de la spécialité). </p>
|
(c'est à dire présent dans tous les parcours de la spécialité). </p>
|
||||||
|
|
||||||
<p>Ce formulaire ne vérifie pas si l'UE est bien conçue pour ce parcours.</p>
|
<p>Ce formulaire ne vérifie pas si l'UE est bien conçue pour ce parcours.</p>
|
||||||
|
|
||||||
<p>Les modifications sont enregistrées au fur et à mesure.</p>
|
<p>Les modifications sont enregistrées au fur et à mesure.</p>
|
||||||
|
|
||||||
@ -186,4 +189,4 @@ function assoc_ue_niveau(event, niveau_id) {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -141,7 +141,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="recap_ects">
|
<div class="recap_ects">
|
||||||
{{"%g"|format(ects_total)}} ECTS validés.
|
{{"%g"|format(ects_acquis)}} ECTS validés sur {{"%g"|format(ects_parcours)}}.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if sco.formsemestre.can_edit_jury() %}
|
{% if sco.formsemestre.can_edit_jury() %}
|
||||||
|
@ -74,14 +74,15 @@ def parcour_formation(formation_id: int, parcour_id: int = None) -> str:
|
|||||||
if parcour is None:
|
if parcour is None:
|
||||||
raise ScoValueError("parcours invalide ou hors référentiel de formation")
|
raise ScoValueError("parcours invalide ou hors référentiel de formation")
|
||||||
|
|
||||||
competences_parcour = (
|
competences_parcour, ects_parcours = (
|
||||||
cursus_but.parcour_formation_competences(parcour, formation)
|
cursus_but.parcour_formation_competences(parcour, formation)
|
||||||
if parcour
|
if parcour
|
||||||
else None
|
else (None, 0.0)
|
||||||
)
|
)
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"but/parcour_formation.j2",
|
"but/parcour_formation.j2",
|
||||||
|
ects_parcours=ects_parcours,
|
||||||
formation=formation,
|
formation=formation,
|
||||||
parcour=parcour,
|
parcour=parcour,
|
||||||
competences_parcour=competences_parcour,
|
competences_parcour=competences_parcour,
|
||||||
|
Loading…
Reference in New Issue
Block a user