diff --git a/app/scodoc/sco_placement.py b/app/scodoc/sco_placement.py index c019bf1d..1b51ced2 100644 --- a/app/scodoc/sco_placement.py +++ b/app/scodoc/sco_placement.py @@ -51,7 +51,7 @@ from wtforms import ( from app.models import Evaluation, ModuleImpl import app.scodoc.sco_utils as scu import app.scodoc.notesdb as ndb -from app.scodoc import html_sco_header, sco_preferences +from app.scodoc import sco_preferences from app.scodoc import sco_edit_module from app.scodoc import sco_evaluations from app.scodoc import sco_excel @@ -204,14 +204,14 @@ def placement_eval_selectetuds(evaluation_id): % runner.__dict__ ) return runner.exec_placement() # calcul et generation du fichier - htmls = [ - html_sco_header.sco_header(), - sco_evaluations.evaluation_describe(evaluation_id=evaluation_id), - "
" + footer + + return render_template( + "scodoc/forms/placement.j2", + evaluations_description=sco_evaluations.evaluation_describe( + evaluation_id=evaluation_id + ), + form=form, + ) class PlacementRunner: diff --git a/app/scodoc/sco_report.py b/app/scodoc/sco_report.py index 2f316bd6..0984c8c3 100644 --- a/app/scodoc/sco_report.py +++ b/app/scodoc/sco_report.py @@ -37,7 +37,7 @@ import time import datetime from operator import itemgetter -from flask import url_for, g, request +from flask import url_for, g, render_template, request import pydot from app import log @@ -50,7 +50,6 @@ from app.models.etudiants import Identite from app.scodoc import ( codes_cursus, - html_sco_header, sco_etud, sco_formsemestre, sco_formsemestre_inscriptions, @@ -411,11 +410,6 @@ def formsemestre_report_counts( if fmt != "html": return tableau H = [ - html_sco_header.sco_header( - cssstyles=sco_groups_view.CSSSTYLES, - javascripts=sco_groups_view.JAVASCRIPTS, - page_title=title, - ), tableau, "\n".join(F), """
Le tableau affiche le nombre d'étudiants de ce semestre dans chacun @@ -423,9 +417,14 @@ def formsemestre_report_counts( pour les lignes et les colonnes. Le codedecision est le code de la décision du jury.
""", - html_sco_header.sco_footer(), ] - return "\n".join(H) + return render_template( + "sco_page.j2", + cssstyles=sco_groups_view.CSSSTYLES, + javascripts=sco_groups_view.JAVASCRIPTS, + title=title, + content="\n".join(H), + ) # -------------------------------------------------------------------------- @@ -813,11 +812,6 @@ def formsemestre_suivi_cohorte( href="{burl}&percent=1">Afficher les résultats en pourcentages""" H = [ - html_sco_header.sco_header( - cssstyles=sco_groups_view.CSSSTYLES, - javascripts=sco_groups_view.JAVASCRIPTS, - page_title=tab.page_title, - ), """{len(etuds)} étudiants sélectionnés
", @@ -1771,11 +1760,12 @@ def formsemestre_graph_cursus( ), """Origine et devenir des étudiants inscrits dans %(titreannee)s""" % sem, - """(version pdf""" - % url_for("notes.formsemestre_graph_cursus", fmt="pdf", **url_kw), - """, image PNG)""" - % url_for("notes.formsemestre_graph_cursus", fmt="png", **url_kw), - f""" + f"""(version pdf, + image PNG) +
Le graphe permet de suivre les étudiants inscrits dans le semestre sélectionné (dessiné en vert). Chaque rectangle représente un semestre (cliquez dedans @@ -1788,8 +1778,14 @@ def formsemestre_graph_cursus( étudiants appartenant aux groupes indiqués dans le semestre d'origine.
""", - html_sco_header.sco_footer(), ] - return "\n".join(H) + return render_template( + "sco_page.j2", + cssstyles=sco_groups_view.CSSSTYLES, + javascripts=sco_groups_view.JAVASCRIPTS, + page_title=f"Graphe cursus de {sem['titreannee']}", + no_sidebar=True, + content="\n".join(H), + ) else: raise ValueError(f"invalid format: {fmt}") diff --git a/app/scodoc/sco_report_but.py b/app/scodoc/sco_report_but.py index 56ffe6d3..8a685a11 100644 --- a/app/scodoc/sco_report_but.py +++ b/app/scodoc/sco_report_but.py @@ -31,21 +31,18 @@ from collections import defaultdict -from flask import request +from flask import render_template, request from app import db from app.but import jury_but from app.models import FormSemestre from app.models.formsemestre import FormSemestreInscription - import app.scodoc.sco_utils as scu -from app.scodoc import html_sco_header from app.scodoc import codes_cursus from app.scodoc.sco_exceptions import ScoValueError - from app.scodoc import sco_preferences -import sco_version from app.scodoc.gen_tables import GenTable +import sco_version # Titres, ordonnés @@ -107,13 +104,11 @@ def formsemestre_but_indicateurs(formsemestre_id: int, fmt="html"): if fmt != "html": return t H = [ - html_sco_header.sco_header(page_title=title), t, """""", - html_sco_header.sco_footer(), ] - return "\n".join(H) + return render_template("sco_page.j2", title=title, content="\n".join(H)) def but_indicateurs_by_bac(formsemestre: FormSemestre) -> dict[str:dict]: diff --git a/app/scodoc/sco_semset.py b/app/scodoc/sco_semset.py index 2eb4c4b3..a1d6cb26 100644 --- a/app/scodoc/sco_semset.py +++ b/app/scodoc/sco_semset.py @@ -40,17 +40,15 @@ sem_set_list() """ import flask -from flask import g, url_for +from flask import g, render_template, url_for from app import db, log from app.comp import res_sem from app.comp.res_compat import NotesTableCompat from app.models import FormSemestre -from app.scodoc import html_sco_header from app.scodoc import sco_etape_apogee from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre_status -from app.scodoc import sco_portal_apogee from app.scodoc import sco_preferences from app.scodoc.gen_tables import GenTable from app.scodoc.sco_etape_bilan import EtapeBilan @@ -412,7 +410,7 @@ def do_semset_delete(semset_id, dialog_confirmed=False): s = SemSet(semset_id=semset_id) if not dialog_confirmed: return scu.confirm_dialog( - "
portail non configuré
- - { footer } - """ + + """, + ) if not dialog_confirmed: return scu.confirm_dialog( f"""retour au trombinoscope - { footer } - """ +
+ """, + ) def _get_etud_platypus_image(t, image_width=2 * cm): @@ -506,7 +508,6 @@ def photos_import_files_form(group_ids=()): back_url = f"groups_photos?{groups_infos.groups_query_args}" H = [ - html_sco_header.sco_header(page_title="Import des photos des étudiants"), f"""Vous pouvez aussi charger les photos individuellement via la fiche de chaque étudiant (menu "Étudiant" / "Changer la photo"). @@ -526,7 +527,6 @@ def photos_import_files_form(group_ids=()):
Création d'une formation (avec UE, matières, modules) à partir un fichier XML (réservé aux utilisateurs avertis). @@ -783,8 +784,8 @@ def formation_import_xml_form(): }">page des référentiels).
{ tf[1] } - { html_sco_header.sco_footer() } - """ + """, + ) elif tf[0] == -1: return flask.redirect(url_for("notes.index_html", scodoc_dept=g.scodoc_dept)) else: @@ -792,8 +793,10 @@ def formation_import_xml_form(): tf[2]["xmlfile"].read() ) - return f""" - { html_sco_header.sco_header(page_title="Import d'une formation") } + return render_template( + "sco_page_dept.j2", + title="Import d'une formation", + content=f"""A utiliser pour importer de nouveaux utilisateurs (enseignants ou secrétaires) @@ -886,12 +884,10 @@ def import_users_form():
Les deux mots de passes saisis sont différents !
- - """ - ) - else: - if not is_valid_password(password): - H.append( - f"""ce mot de passe n'est pas assez compliqué !
-
(oui, il faut un mot de passe vraiment compliqué !)
-
Ne notez pas ce mot de passe, mais mémorisez le !
-Rappel: il est interdit de communiquer son mot de passe à - un tiers, même si c'est un collègue de confiance !
-Si vous n'êtes pas administrateur, le système va vous redemander - votre login et nouveau mot de passe au prochain accès. -
- Continuer - - -""" - - return html_sco_header.sco_header() + "\n".join(H) + F - - @bp.route("/toggle_active_user/