Fix regressions: édition formation. + améliore présentation.

This commit is contained in:
ilona 2024-10-21 12:35:24 +02:00
parent fdc01a5c3b
commit bdf47d9240
6 changed files with 89 additions and 81 deletions

View File

@ -494,7 +494,7 @@ class GenTable:
caption = self.html_caption or self.caption
if caption or self.base_url:
H.append('<p class="gt_caption">')
H.append('<div class="gt_caption">')
if caption:
H.append(caption)
if self.base_url:
@ -512,7 +512,7 @@ class GenTable:
}">{scu.ICON_PDF}</a>"""
)
H.append("</span>")
H.append("</p>")
H.append("</div>")
H.append(self.html_next_section)
return "\n".join(H)

View File

@ -71,19 +71,17 @@ def html_edit_formation_apc(
ues_by_sem = {}
ects_by_sem = {}
for semestre_idx in semestre_ids:
ues_by_sem[semestre_idx] = formation.ues.filter_by(
semestre_idx=semestre_idx
).order_by(UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme)
ects = [
ue.ects
for ue in ues_by_sem[semestre_idx]
if ue.type != codes_cursus.UE_SPORT
]
for s_idx in semestre_ids:
ues_by_sem[s_idx] = (
formation.ues.filter_by(semestre_idx=s_idx)
.order_by(UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme)
.all()
)
ects = [ue.ects for ue in ues_by_sem[s_idx] if ue.type != codes_cursus.UE_SPORT]
if None in ects:
ects_by_sem[semestre_idx] = '<span class="missing_ue_ects">manquant</span>'
ects_by_sem[s_idx] = '<span class="missing_ue_ects">manquant</span>'
else:
ects_by_sem[semestre_idx] = f"{sum(ects):g}"
ects_by_sem[s_idx] = f"{sum(ects):g}"
arrow_up, arrow_down, arrow_none = sco_groups.get_arrow_icons_tags()
@ -124,14 +122,14 @@ def html_edit_formation_apc(
ues_by_sem=ues_by_sem,
),
]
for semestre_idx in semestre_ids:
ressources_in_sem = ressources.filter_by(semestre_id=semestre_idx)
saes_in_sem = saes.filter_by(semestre_id=semestre_idx)
other_modules_in_sem = other_modules.filter_by(semestre_id=semestre_idx)
for s_idx in semestre_ids:
ressources_in_sem = ressources.filter_by(semestre_id=s_idx)
saes_in_sem = saes.filter_by(semestre_id=s_idx)
other_modules_in_sem = other_modules.filter_by(semestre_id=s_idx)
matiere_parent = Matiere.query.filter(
Matiere.ue_id == UniteEns.id,
UniteEns.formation_id == formation.id,
UniteEns.semestre_idx == semestre_idx,
UniteEns.semestre_idx == s_idx,
UniteEns.type != codes_cursus.UE_SPORT,
).first()
H += [
@ -139,7 +137,7 @@ def html_edit_formation_apc(
render_template(
"pn/form_mods.j2",
formation=formation,
titre=f"Ressources du S{semestre_idx}",
titre=f"Ressources du S{s_idx}",
create_element_msg="créer une nouvelle ressource",
# matiere_parent=matiere_parent,
modules=ressources_in_sem,
@ -148,16 +146,16 @@ def html_edit_formation_apc(
tag_editable=tag_editable,
icons=icons,
scu=scu,
semestre_id=semestre_idx,
semestre_id=s_idx,
)
if ues_by_sem[semestre_idx].count() > 0
if len(ues_by_sem[s_idx]) > 0
else ""
),
(
render_template(
"pn/form_mods.j2",
formation=formation,
titre=f"Situations d'Apprentissage et d'Évaluation (SAÉs) S{semestre_idx}",
titre=f"Situations d'Apprentissage et d'Évaluation (SAÉs) S{s_idx}",
create_element_msg="créer une nouvelle SAÉ",
# matiere_parent=matiere_parent,
modules=saes_in_sem,
@ -166,16 +164,16 @@ def html_edit_formation_apc(
tag_editable=tag_editable,
icons=icons,
scu=scu,
semestre_id=semestre_idx,
semestre_id=s_idx,
)
if ues_by_sem[semestre_idx].count() > 0
if len(ues_by_sem[s_idx]) > 0
else ""
),
(
render_template(
"pn/form_mods.j2",
formation=formation,
titre=f"Autres modules (non BUT) du S{semestre_idx}",
titre=f"Autres modules (non BUT) du S{s_idx}",
create_element_msg="créer un nouveau module",
modules=other_modules_in_sem,
module_type=ModuleType.STANDARD,
@ -183,10 +181,11 @@ def html_edit_formation_apc(
tag_editable=tag_editable,
icons=icons,
scu=scu,
semestre_id=semestre_idx,
semestre_id=s_idx,
)
if ues_by_sem[semestre_idx].count() > 0
else """<span class="fontred">créer une UE pour pouvoir ajouter des modules</span>"""
if len(ues_by_sem[s_idx]) > 0
else """<span class="warning">créer une UE pour pouvoir ajouter des
modules</span>"""
),
]

View File

@ -57,3 +57,8 @@ div.dt-container div.dt-search {
div.dt-container div.dt-search input {
margin-left: 0.5em;
}
div.gt_caption {
margin-top: 4px;
margin-bottom: 16px;
}

View File

@ -131,6 +131,11 @@ div.scobox-etud {
background-color: var(--sco-color-background);
}
ul.sco-links li {
margin-bottom: 8px;
}
/* customization of multiselect style */
.multiselect-container.dropdown-menu {
background-color: #e9e9e9;
@ -4091,26 +4096,6 @@ div.scobox.update_warning>div:nth-child(2) {
padding-left: 8ex;
}
/*
Titres des tabs:
.nav-tabs li a {
font-variant: small-caps;
font-size: 13pt;
}
#group-tabs {
clear: both;
}
#group-tabs ul {
display: inline;
}
#group-tabs ul li {
display: inline;
}
*/
/* Page accueil */
#scodoc_attribution p {
font-size: 75%;

View File

@ -118,7 +118,7 @@
</ul>
{% if editable %}
<ul>
{% if ues_by_sem[semestre_idx] and not ues_by_sem[semestre_idx][0].is_locked()[0] %}
{% if not ues_by_sem[semestre_idx] or not ues_by_sem[semestre_idx][0].is_locked()[0] %}
<li class="notes_ue_list notes_ue_list_add"><a class="stdlink" href="{{
url_for('notes.ue_create',
scodoc_dept=g.scodoc_dept,

View File

@ -688,39 +688,58 @@ def index_html():
if editable:
H.append(
f"""
<p class="help">Une "formation" est un programme pédagogique structuré
en UE, matières et modules. Chaque semestre se réfère à une formation.
La modification d'une formation affecte tous les semestres qui s'y
réfèrent.</p>
<div class="scobox">
<div class="help">
<p>Une "formation" est un programme pédagogique structuré
en UE, matières et modules.
Chaque semestre se réfère à une formation.
La modification d'une formation affecte tous les semestres qui s'y
réfèrent.
</p>
</div>
<ul class="sco-links">
<li><a class="stdlink" href="formation_create" id="link-create-formation">Créer une
formation</a>
</li>
<li><a class="stdlink" href="formation_import_xml_form">Importer une formation (xml)</a>
</li>
<li><a class="stdlink" href="{
url_for("notes.export_recap_formations_annee_scolaire",
scodoc_dept=g.scodoc_dept, annee_scolaire=scu.annee_scolaire()-1)
}">exporter les formations de l'année scolaire
{scu.annee_scolaire()-1} - {scu.annee_scolaire()}
</a>
</li>
<li><a class="stdlink" href="{
url_for("notes.export_recap_formations_annee_scolaire",
scodoc_dept=g.scodoc_dept, annee_scolaire=scu.annee_scolaire())
}">exporter les formations de l'année scolaire
{scu.annee_scolaire()} - {scu.annee_scolaire()+1}
</a>
</li>
</ul>
</div>
<ul>
<li><a class="stdlink" href="formation_create" id="link-create-formation">Créer une
formation</a>
</li>
<li><a class="stdlink" href="formation_import_xml_form">Importer une formation (xml)</a>
</li>
<li><a class="stdlink" href="{
url_for("notes.export_recap_formations_annee_scolaire",
scodoc_dept=g.scodoc_dept, annee_scolaire=scu.annee_scolaire()-1)
}">exporter les formations de l'année scolaire
{scu.annee_scolaire()-1} - {scu.annee_scolaire()}
</a>
</li>
<li><a class="stdlink" href="{
url_for("notes.export_recap_formations_annee_scolaire",
scodoc_dept=g.scodoc_dept, annee_scolaire=scu.annee_scolaire())
}">exporter les formations de l'année scolaire
{scu.annee_scolaire()} - {scu.annee_scolaire()+1}
</a>
</li>
</ul>
<h3>Référentiels de compétences</h3>
<ul>
<li><a class="stdlink" href="{
url_for('notes.refcomp_table', scodoc_dept=g.scodoc_dept)
}">Liste des référentiels chargés</a>
</li>
</ul>
<div class="scobox">
<div class="scobox-title">Référentiels de compétences</div>
<div class="help">
Les formations par compétences de type BUT doivent être associées à un référentiel
de compétences définissant leur structure en blocs de compétences.
Le référentiel doit être chargé avant la définition de la formation s'y référant.
</div>
<ul class="sco-links">
<li><a class="stdlink" href="{
url_for('notes.refcomp_table', scodoc_dept=g.scodoc_dept)
}">Liste des référentiels chargés</a>
</li>
<li>
<a class="stdlink" href="{url_for(
'notes.refcomp_load', scodoc_dept=g.scodoc_dept)
}">Charger un nouveau référentiel de compétences Orébut</a>
</li>
</ul>
</div>
"""
)