From ebd71a32994ee3b9dd3ab3ff975df75785c8cdee Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet " + 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.
Placement et émargement des étudiants
",
- render_template("scodoc/forms/placement.j2", form=form),
- ]
- footer = html_sco_header.sco_footer()
- return "\n".join(htmls) + "
{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/