1
0
forked from ScoDoc/ScoDoc

APC / Niveaux / templates: ameliroations mineures

This commit is contained in:
Emmanuel Viennet 2023-04-19 11:56:33 +02:00
parent 47ed37e90e
commit 41d938931e
7 changed files with 23 additions and 19 deletions

View File

@ -321,6 +321,8 @@ def set_ue_parcours(ue_id: int):
] ]
log(f"set_ue_parcours: ue_id={ue.id} parcours_ids={parcours_ids}") log(f"set_ue_parcours: ue_id={ue.id} parcours_ids={parcours_ids}")
ok, error_message = ue.set_parcours(parcours) ok, error_message = ue.set_parcours(parcours)
if not ok:
return json_error(404, error_message)
return {"status": ok, "message": error_message} return {"status": ok, "message": error_message}

View File

@ -325,7 +325,8 @@ class UniteEns(db.Model):
if self.niveau_competence_id is not None: if self.niveau_competence_id is not None:
return ( return (
False, False,
f"{self.acronyme} déjà associée à un niveau de compétences", f"""{self.acronyme} déjà associée à un niveau de compétences ({
self.id}, {self.niveau_competence_id})""",
) )
if ( if (
niveau.competence.referentiel.id niveau.competence.referentiel.id
@ -358,6 +359,7 @@ class UniteEns(db.Model):
Si un niveau est déjà associé, vérifie sa cohérence. Si un niveau est déjà associé, vérifie sa cohérence.
Renvoie (True, "") si ok, sinon (False, error_message) Renvoie (True, "") si ok, sinon (False, error_message)
""" """
msg = ""
# Le niveau est-il dans tous ces parcours ? Sinon, l'enlève # Le niveau est-il dans tous ces parcours ? Sinon, l'enlève
prev_niveau = self.niveau_competence prev_niveau = self.niveau_competence
if ( if (
@ -366,6 +368,7 @@ class UniteEns(db.Model):
and self.niveau_competence.id not in self._parcours_niveaux_ids(parcours) and self.niveau_competence.id not in self._parcours_niveaux_ids(parcours)
): ):
self.niveau_competence = None self.niveau_competence = None
msg = " (niveau compétence désassocié !)"
if parcours and self.niveau_competence: if parcours and self.niveau_competence:
ok, error_message = self.check_niveau_unique_dans_parcours( ok, error_message = self.check_niveau_unique_dans_parcours(
@ -381,12 +384,12 @@ class UniteEns(db.Model):
# Invalidation du cache # Invalidation du cache
self.formation.invalidate_cached_sems() self.formation.invalidate_cached_sems()
log(f"ue.set_parcours( {self}, {parcours} )") log(f"ue.set_parcours( {self}, {parcours} )")
return True, "" return True, "parcours enregistrés" + msg
def add_parcour(self, parcour: ApcParcours) -> tuple[bool, str]: def add_parcour(self, parcour: ApcParcours) -> tuple[bool, str]:
"""Ajoute ce parcours à ceux de l'UE""" """Ajoute ce parcours à ceux de l'UE"""
if parcour.id in {p.id for p in self.parcours}: if parcour.id in {p.id for p in self.parcours}:
return True, "" return True, "" # déjà présent
if parcour.referentiel.id != self.formation.referentiel_competence.id: if parcour.referentiel.id != self.formation.referentiel_competence.id:
return False, "Le parcours n'appartient pas au référentiel de la formation" return False, "Le parcours n'appartient pas au référentiel de la formation"

View File

@ -127,7 +127,7 @@ def formation_export_dict(
ue_dict["apc_niveau_libelle"] = ue.niveau_competence.libelle ue_dict["apc_niveau_libelle"] = ue.niveau_competence.libelle
ue_dict["apc_niveau_annee"] = ue.niveau_competence.annee ue_dict["apc_niveau_annee"] = ue.niveau_competence.annee
ue_dict["apc_niveau_ordre"] = ue.niveau_competence.ordre ue_dict["apc_niveau_ordre"] = ue.niveau_competence.ordre
# Et le parcour: # Et les parcours:
if ue.parcours: if ue.parcours:
ue_dict["parcours"] = [ ue_dict["parcours"] = [
parcour.to_dict(with_annees=False) for parcour in ue.parcours parcour.to_dict(with_annees=False) for parcour in ue.parcours
@ -268,8 +268,8 @@ def _formation_retreive_refcomp(f_dict: dict) -> int:
def _formation_retreive_apc_niveau( def _formation_retreive_apc_niveau(
referentiel_competence_id: int, ue_dict: dict referentiel_competence_id: int, ue_dict: dict
) -> int: ) -> int:
"""Recherche dans le ref. de comp. un niveau pour cette UE """Recherche dans le ref. de comp. un niveau pour cette UE.
utilise comme clé (libelle, annee, ordre) Utilise (libelle, annee, ordre) comme clé.
""" """
libelle = ue_dict.get("apc_niveau_libelle") libelle = ue_dict.get("apc_niveau_libelle")
annee = ue_dict.get("apc_niveau_annee") annee = ue_dict.get("apc_niveau_annee")
@ -367,6 +367,8 @@ def formation_import_xml(doc: str, import_tags=True, use_local_refcomp=False):
assert ue assert ue
if xml_ue_id: if xml_ue_id:
ues_old2new[xml_ue_id] = ue_id ues_old2new[xml_ue_id] = ue_id
# parcours BUT
# TODO XXX
# élément optionnel présent dans les exports BUT: # élément optionnel présent dans les exports BUT:
ue_reference = ue_info[1].get("reference") ue_reference = ue_info[1].get("reference")
if ue_reference: if ue_reference:

View File

@ -111,9 +111,7 @@ get_base_preferences(formsemestre_id)
""" """
import flask import flask
from flask import flash, g, request from flask import current_app, flash, g, request, url_for
# from flask_login import current_user
from app.models import Departement from app.models import Departement
from app.scodoc import sco_cache from app.scodoc import sco_cache
@ -2234,7 +2232,6 @@ class SemPreferences:
raise ScoValueError( raise ScoValueError(
"sem_preferences.edit doit etre appele sur un semestre !" "sem_preferences.edit doit etre appele sur un semestre !"
) # a bug ! ) # a bug !
sem = sco_formsemestre.get_formsemestre(self.formsemestre_id)
H = [ H = [
html_sco_header.html_sem_header( html_sco_header.html_sem_header(
"Préférences du semestre", "Préférences du semestre",

View File

@ -2,8 +2,8 @@
{% block styles %} {% block styles %}
{{super()}} {{super()}}
<link href="{{sco.scu.STATIC_DIR}}/css/refcomp_parcours_niveaux.css" rel="stylesheet" type="text/css" /> <link href="{{scu.STATIC_DIR}}/css/refcomp_parcours_niveaux.css" rel="stylesheet" type="text/css" />
<link href="{{sco.scu.STATIC_DIR}}/css/parcour_formation.css" rel="stylesheet" type="text/css" /> <link href="{{scu.STATIC_DIR}}/css/parcour_formation.css" rel="stylesheet" type="text/css" />
{% endblock %} {% endblock %}
{% macro menu_ue(niv, sem="pair", sem_idx=0) -%} {% macro menu_ue(niv, sem="pair", sem_idx=0) -%}
@ -37,7 +37,7 @@
{% if niv['ue_'+sem] %} {% if niv['ue_'+sem] %}
{{ niv['ue_'+sem].acronyme }} {{ niv['ue_'+sem].acronyme }}
{% else %} {% else %}
<span class="fontred">{{sco.scu.EMO_WARNING|safe}} non associé</span> <span class="fontred">{{scu.EMO_WARNING|safe}} non associé</span>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@ -14,23 +14,23 @@
{% if sco.sem.modalite %} en {{sco.sem.modalite}}{% endif %}</span> {% if sco.sem.modalite %} en {{sco.sem.modalite}}{% endif %}</span>
<span class="dates"> <span class="dates">
<a title="du {{sco.sem.date_debut.strftime('%d/%m/%Y')}} <a title="du {{sco.sem.date_debut.strftime('%d/%m/%Y')}}
au {{sco.sem.date_fin.strftime('%d/%m/%Y')}} ">{{sco.scu.MONTH_NAMES_ABBREV[ sco.sem.date_debut.month - 1]}} au {{sco.sem.date_fin.strftime('%d/%m/%Y')}} ">{{scu.MONTH_NAMES_ABBREV[ sco.sem.date_debut.month - 1]}}
{{sco.sem.date_debut.year}} - {{sco.scu.MONTH_NAMES_ABBREV[sco.sem.date_fin.month - 1]}} {{sco.sem.date_debut.year}} - {{scu.MONTH_NAMES_ABBREV[sco.sem.date_fin.month - 1]}}
{{sco.sem.date_fin.year}}</a></span> {{sco.sem.date_fin.year}}</a></span>
<span class="resp"><a <span class="resp"><a
title="{{sco.sem.responsables_str(abbrev_prenom=False)}}">{{sco.sem.responsables_str()}}</a></span> title="{{sco.sem.responsables_str(abbrev_prenom=False)}}">{{sco.sem.responsables_str()}}</a></span>
<span class="nbinscrits"><a class="discretelink" href="{{url_for('scolar.groups_view', scodoc_dept=g.scodoc_dept, <span class="nbinscrits"><a class="discretelink" href="{{url_for('scolar.groups_view', scodoc_dept=g.scodoc_dept,
formsemestre_id=sco.sem.id)}}">{{sco.sem.inscriptions|length}} inscrits</a></span><span class="lock">{% if formsemestre_id=sco.sem.id)}}">{{sco.sem.inscriptions|length}} inscrits</a></span><span class="lock">{% if
not sco.sem.etat %}<a href="{{url_for('notes.formsemestre_flip_lock', scodoc_dept=g.scodoc_dept, not sco.sem.etat %}<a href="{{url_for('notes.formsemestre_flip_lock', scodoc_dept=g.scodoc_dept,
formsemestre_id=sco.sem.id)}}">{{sco.scu.icontag("lock_img", border="0", title="Semestre formsemestre_id=sco.sem.id)}}">{{scu.icontag("lock_img", border="0", title="Semestre
verrouillé")|safe}}</a>{% endif %}</span><span class="eye"> verrouillé")|safe}}</a>{% endif %}</span><span class="eye">
{% if sco.prefs["bul_display_publication"] %} {% if sco.prefs["bul_display_publication"] %}
<a href="{{url_for('notes.formsemestre_change_publication_bul', scodoc_dept=g.scodoc_dept, <a href="{{url_for('notes.formsemestre_change_publication_bul', scodoc_dept=g.scodoc_dept,
formsemestre_id=sco.sem.id)}}"> formsemestre_id=sco.sem.id)}}">
{% if sco.sem.bul_hide_xml %} {% if sco.sem.bul_hide_xml %}
{{ sco.scu.icontag("hide_img", border="0", title="Bulletins NON publiés")|safe}} {{ scu.icontag("hide_img", border="0", title="Bulletins NON publiés")|safe}}
{% else %} {% else %}
{{ sco.scu.icontag("eye_img", border="0", title="Bulletins publiés")|safe }} {{ scu.icontag("eye_img", border="0", title="Bulletins publiés")|safe }}
{% endif %} {% endif %}
{% endif %} {% endif %}
</span> </span>

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.4.71" SCOVERSION = "9.4.74"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"