diff --git a/app/but/jury_but_view.py b/app/but/jury_but_view.py index b82007b86..915d75393 100644 --- a/app/but/jury_but_view.py +++ b/app/but/jury_but_view.py @@ -331,250 +331,6 @@ def _gen_but_rcue(dec_rcue: DecisionsProposeesRCUE, niveau: ApcNiveau) -> str: """ -def jury_but_semestriel( - formsemestre: FormSemestre, - etud: Identite, - read_only: bool, - navigation_div: str = "", -) -> str: - """Page: formulaire saisie décision d'UE d'un semestre BUT isolé (pas jury annuel).""" - res: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre) - parcour, ues = jury_but.list_ue_parcour_etud(formsemestre, etud, res) - inscription_etat = etud.inscription_etat(formsemestre.id) - semestre_terminal = ( - formsemestre.semestre_id >= formsemestre.formation.get_cursus().NB_SEM - ) - autorisations_passage = ScolarAutorisationInscription.query.filter_by( - etudid=etud.id, - origin_formsemestre_id=formsemestre.id, - ).all() - # Par défaut: autorisé à passer dans le semestre suivant si sem. impair, - # ou si décision déjà enregistrée: - est_autorise_a_passer = (formsemestre.semestre_id % 2) or ( - formsemestre.semestre_id + 1 - ) in (a.semestre_id for a in autorisations_passage) - decisions_ues = { - ue.id: DecisionsProposeesUE(etud, formsemestre, ue, inscription_etat) - for ue in ues - } - for dec_ue in decisions_ues.values(): - dec_ue.compute_codes() - - if request.method == "POST": - if not read_only: - for key in request.form: - code = request.form[key] - # Codes d'UE - code_match = re.match(r"^code_ue_(\d+)$", key) - if code_match: - ue_id = int(code_match.group(1)) - dec_ue = decisions_ues.get(ue_id) - if not dec_ue: - raise ScoValueError(f"UE invalide ue_id={ue_id}") - dec_ue.record(code) - db.session.commit() - flash("codes enregistrés") - if not semestre_terminal: - if request.form.get("autorisation_passage"): - if not formsemestre.semestre_id + 1 in ( - a.semestre_id for a in autorisations_passage - ): - ScolarAutorisationInscription.delete_autorisation_etud( - etud.id, formsemestre.id - ) - ScolarAutorisationInscription.autorise_etud( - etud.id, - formsemestre.formation.formation_code, - formsemestre.id, - formsemestre.semestre_id + 1, - ) - db.session.commit() - flash( - f"""autorisation de passage en S{formsemestre.semestre_id + 1 - } enregistrée""" - ) - else: - if est_autorise_a_passer: - ScolarAutorisationInscription.delete_autorisation_etud( - etud.id, formsemestre.id - ) - db.session.commit() - flash( - f"autorisation de passage en S{formsemestre.semestre_id + 1} annulée" - ) - ScolarNews.add( - typ=ScolarNews.NEWS_JURY, - obj=formsemestre.id, - text=f"""Saisie décision jury dans {formsemestre.html_link_status()}""", - url=url_for( - "notes.formsemestre_status", - scodoc_dept=g.scodoc_dept, - formsemestre_id=formsemestre.id, - ), - ) - return flask.redirect( - url_for( - "notes.formsemestre_validation_but", - scodoc_dept=g.scodoc_dept, - formsemestre_id=formsemestre.id, - etudid=etud.id, - ) - ) - # GET - if formsemestre.semestre_id % 2 == 0: - warning = f"""
- Cet étudiant de S{formsemestre.semestre_id} ne peut pas passer - en jury BUT annuel car il lui manque le semestre précédent. -
""" - else: - warning = "" - H = [ - html_sco_header.sco_header( - page_title=f"Validation BUT S{formsemestre.semestre_id}", - formsemestre_id=formsemestre.id, - etudid=etud.id, - cssstyles=("css/jury_but.css",), - javascripts=("js/jury_but.js",), - ), - f""" -
-
-
-
-
Jury BUT S{formsemestre.id} - - Parcours {(parcour.libelle if parcour else False) or "non spécifié"} -
-
{etud.nomprenom}
-
- -
-

Jury sur un semestre BUT isolé (ne concerne que les UEs)

- {warning} -
- -
- """, - ] - - erase_span = "" - if not read_only: - # Requête toutes les validations (pas seulement celles du deca courant), - # au cas où: changement d'architecture, saisie en mode classique, ... - validations = ScolarFormSemestreValidation.query.filter_by( - etudid=etud.id, formsemestre_id=formsemestre.id - ).all() - if validations: - erase_span = f"""effacer les décisions enregistrées""" - else: - erase_span = ( - "Cet étudiant n'a aucune décision enregistrée pour ce semestre." - ) - - H.append( - f""" -
-
-
Unités d'enseignement de S{formsemestre.semestre_id}:
- """ - ) - if not ues: - H.append( - """
Aucune UE ! Vérifiez votre programme de - formation, et l'association UEs / Niveaux de compétences
""" - ) - else: - H.append( - """ -
-
-
-
-
- """ - ) - for ue in ues: - dec_ue = decisions_ues[ue.id] - H.append("""
""") - H.append( - _gen_but_niveau_ue( - ue, - dec_ue, - disabled=read_only, - ) - ) - H.append( - """
-
""" - ) - H.append("
") # but_annee - - div_autorisations_passage = ( - f""" -
- Autorisé à passer en : - { ", ".join( ["S" + str(a.semestre_id or '') for a in autorisations_passage ] )} -
- """ - if autorisations_passage - else """
pas d'autorisations de passage enregistrées.
""" - ) - H.append(div_autorisations_passage) - - if read_only: - H.append( - f"""
- {"Vous n'avez pas la permission de modifier ces décisions." - if formsemestre.etat - else "Semestre verrouillé."} - Les champs entourés en vert sont enregistrés. -
- """ - ) - else: - if formsemestre.semestre_id < formsemestre.formation.get_cursus().NB_SEM: - H.append( - f""" -
- - autoriser à passer dans le semestre S{formsemestre.semestre_id+1} - -
- """ - ) - else: - H.append("""
dernier semestre de la formation.
""") - H.append( - f""" -
- - {erase_span} -
- """ - ) - - H.append(navigation_div) - H.append("
") - H.append( - render_template( - "but/documentation_codes_jury.j2", - nom_univ=f"""Export {sco_preferences.get_preference("InstituteName") - or sco_preferences.get_preference("UnivName") - or "Apogée"}""", - codes=ScoDocSiteConfig.get_codes_apo_dict(), - ) - ) - - return "\n".join(H) - - # ------------- def infos_fiche_etud_html(etudid: int) -> str: """Section html pour fiche etudiant diff --git a/app/views/notes.py b/app/views/notes.py index 6fc17e7f2..6832b6b4e 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -2374,10 +2374,6 @@ def formsemestre_validation_but( ) deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre) - if len(deca.get_decisions_rcues_annee()) == 0: - return jury_but_view.jury_but_semestriel( - formsemestre, etud, read_only, navigation_div=navigation_div - ) if request.method == "POST": if not read_only: deca.record_form(request.form) diff --git a/sco_version.py b/sco_version.py index 7a3b6fad5..284326939 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.6.940" +SCOVERSION = "9.6.941" SCONAME = "ScoDoc"