diff --git a/app/but/jury_but_view.py b/app/but/jury_but_view.py index f6437ad92..a3c0dc0a0 100644 --- a/app/but/jury_but_view.py +++ b/app/but/jury_but_view.py @@ -8,6 +8,7 @@ """ import re +import numpy as np import flask from flask import flash, url_for @@ -15,10 +16,15 @@ from flask import g, request from app import db from app.but import jury_but -from app.but.jury_but import DecisionsProposeesAnnee, DecisionsProposeesUE +from app.but.jury_but import ( + DecisionsProposeesAnnee, + DecisionsProposeesRCUE, + DecisionsProposeesUE, +) from app.comp import res_sem from app.comp.res_but import ResultatsSemestreBUT from app.models import ( + ApcNiveau, FormSemestre, FormSemestreInscription, Identite, @@ -59,19 +65,9 @@ def show_etud(deca: DecisionsProposeesAnnee, read_only: bool = True) -> str: """ ) else: - H.append("""
Une "formation" est un programme pédagogique structuré +
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 + La modification d'une formation affecte tous les semestres qui s'y réfèrent.
Les enseignants d'un module ont le droit de + F = f"""
Les enseignants d'un module ont le droit de saisir et modifier toutes les notes des évaluations de ce module.
Pour changer le responsable du module, passez par la - page "Modification du semestre", accessible uniquement au responsable de la formation (chef de département) + page "Modification du semestre", + accessible uniquement au responsable de la formation (chef de département)
- """ % ( - sem["formation_id"], - M["formsemestre_id"], - ) + """ modform = [ ("moduleimpl_id", {"input_type": "hidden"}), @@ -1009,14 +1016,18 @@ def edit_enseignants_form(moduleimpl_id): or ens_id == M["responsable_id"] ): H.append( - 'Enseignant %s déjà dans la liste !
' % ens_id + f"""Enseignant {ens_id} déjà dans la liste !
""" ) else: sco_moduleimpl.do_ens_create( {"moduleimpl_id": moduleimpl_id, "ens_id": ens_id} ) return flask.redirect( - "edit_enseignants_form?moduleimpl_id=%s" % moduleimpl_id + url_for( + "notes.edit_enseignants_form", + scodoc_dept=g.scodoc_dept, + moduleimpl_id=moduleimpl_id, + ) ) return header + "\n".join(H) + tf[1] + F + footer @@ -1372,12 +1383,12 @@ def formsemestre_enseignants_list(formsemestre_id, format="html"): if not u: continue cursor.execute( - """SELECT * FROM scolog L, notes_formsemestre_inscription I - WHERE method = 'AddAbsence' - and authenticated_user = %(authenticated_user)s - and L.etudid = I.etudid - and I.formsemestre_id = %(formsemestre_id)s - and date > %(date_debut)s + """SELECT * FROM scolog L, notes_formsemestre_inscription I + WHERE method = 'AddAbsence' + and authenticated_user = %(authenticated_user)s + and L.etudid = I.etudid + and I.formsemestre_id = %(formsemestre_id)s + and date > %(date_debut)s and date < %(date_fin)s """, { @@ -1448,15 +1459,21 @@ def edit_enseignants_form_delete(moduleimpl_id, ens_id: int): ok = True break if not ok: - raise ScoValueError("invalid ens_id (%s)" % ens_id) + raise ScoValueError(f"invalid ens_id ({ens_id})") ndb.SimpleQuery( """DELETE FROM notes_modules_enseignants - WHERE moduleimpl_id = %(moduleimpl_id)s + WHERE moduleimpl_id = %(moduleimpl_id)s AND ens_id = %(ens_id)s """, {"moduleimpl_id": moduleimpl_id, "ens_id": ens_id}, ) - return flask.redirect("edit_enseignants_form?moduleimpl_id=%s" % moduleimpl_id) + return flask.redirect( + url_for( + "notes.edit_enseignants_form", + scodoc_dept=g.scodoc_dept, + moduleimpl_id=moduleimpl_id, + ) + ) # --- Gestion des inscriptions aux semestres @@ -2403,10 +2420,16 @@ def formsemestre_validation_but( warning = "" if len(deca.niveaux_competences) != len(deca.decisions_rcue_by_niveau): - warning += f"""Problème détecté réparable: +
Problème détecté réparable: réparer maintenant
""" % (formsemestre_id,)