diff --git a/app/scodoc/gen_tables.py b/app/scodoc/gen_tables.py index b5ce3e6deffa80dd148c8d282a2869f7106f1735..5820d20a3155eb81a42f572c012162206f4e4604 100644 --- a/app/scodoc/gen_tables.py +++ b/app/scodoc/gen_tables.py @@ -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) diff --git a/app/scodoc/sco_edit_apc.py b/app/scodoc/sco_edit_apc.py index 8943b2342171829f38c6cdabb0352d46f2f76e0c..ab5e2d7eb21a76b82f269cb8670be88edf889665 100644 --- a/app/scodoc/sco_edit_apc.py +++ b/app/scodoc/sco_edit_apc.py @@ -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>""" ), ] diff --git a/app/static/css/gt_table.css b/app/static/css/gt_table.css index 2e8253e60b21d205866c1fc95737f9c863ca2835..0e57dd250d71824a0990db4aa0d37204c0930237 100644 --- a/app/static/css/gt_table.css +++ b/app/static/css/gt_table.css @@ -56,4 +56,9 @@ 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; } \ No newline at end of file diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css index 06234400ef37d7f9373fd4965d54089d4061b09a..19fb764564279bc9bf7657701dc4dab3620471a0 100644 --- a/app/static/css/scodoc.css +++ b/app/static/css/scodoc.css @@ -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%; diff --git a/app/templates/pn/form_ues.j2 b/app/templates/pn/form_ues.j2 index 255605afec30b57d7540214771c72c5b5b7877df..9369b132068c5f9a6c4f1a8e99a8d5616aa4dca7 100644 --- a/app/templates/pn/form_ues.j2 +++ b/app/templates/pn/form_ues.j2 @@ -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, diff --git a/app/views/notes.py b/app/views/notes.py index 22d1a16fb0a0797ceae6156a5459ff1c8c54fe70..36cd044af921914a80639f0e9bff5e90722231c2 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -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> - - <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="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> + + <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> """ )