diff --git a/app/__init__.py b/app/__init__.py
index 738ad0970..2ecd0d33a 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -204,7 +204,7 @@ class ReverseProxied(object):
def create_app(config_class=DevConfig):
app = Flask(__name__, static_url_path="/ScoDoc/static", static_folder="static")
app.wsgi_app = ReverseProxied(app.wsgi_app)
- app.logger.setLevel(logging.DEBUG)
+ app.logger.setLevel(logging.INFO)
# Evite de logguer toutes les requetes dans notre log
logging.getLogger("werkzeug").disabled = True
diff --git a/app/but/apc_edit_ue.py b/app/but/apc_edit_ue.py
index dd8e60a86..3e8be20e8 100644
--- a/app/but/apc_edit_ue.py
+++ b/app/but/apc_edit_ue.py
@@ -70,7 +70,9 @@ def form_ue_choix_niveau(formation: Formation, ue: UniteEns) -> str:
+
UE
+ ${(()=>{
+ let output = "";
+ data.semestre.decision_ue.forEach(ue=>{
+ output += `
${ue.acronyme}
${ue.code}
`;
})
return output;
})()}
diff --git a/app/templates/pn/form_ues.html b/app/templates/pn/form_ues.html
index fed118333..aa6b32359 100644
--- a/app/templates/pn/form_ues.html
+++ b/app/templates/pn/form_ues.html
@@ -30,7 +30,7 @@
- {{ue.acronyme}} {{ue.titre}}
+
{% set virg = joiner(", ") %}
(
{%- if ue.ue_code -%}{{ virg() }}code {{ue.ue_code}} {%- endif -%}
@@ -53,16 +54,16 @@
)
- {% if (ue.niveau_competence is none) and ue.type == 0 %}
-
pas de compétence associée
- {% endif %}
-
+
{% if editable and not ue.is_locked() %}
modifier
{% endif %}
+ {{ form_ue_choix_niveau(formation, ue)|safe }}
+
+
{% if ue.type == 1 and ue.modules.count() == 0 %}
aucun module rattaché !
{% endif %}
diff --git a/app/views/notes.py b/app/views/notes.py
index c1715c927..fe1774a73 100644
--- a/app/views/notes.py
+++ b/app/views/notes.py
@@ -296,7 +296,9 @@ def formsemestre_bulletinetud(
format = format or "html"
if not isinstance(formsemestre_id, int):
- raise ScoInvalidIdType("formsemestre_id must be an integer !")
+ raise ScoInvalidIdType(
+ "formsemestre_bulletinetud: formsemestre_id must be an integer !"
+ )
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
if etudid:
etud = models.Identite.query.get_or_404(etudid)
@@ -826,7 +828,9 @@ def XMLgetFormsemestres(etape_apo=None, formsemestre_id=None):
if not formsemestre_id:
return flask.abort(404, "argument manquant: formsemestre_id")
if not isinstance(formsemestre_id, int):
- return flask.abort(404, "formsemestre_id must be an integer !")
+ return flask.abort(
+ 404, "XMLgetFormsemestres: formsemestre_id must be an integer !"
+ )
args = {}
if etape_apo:
args["etape_apo"] = etape_apo
@@ -2548,9 +2552,8 @@ def formsemestre_validation_suppress_etud(
)
if not dialog_confirmed:
d = sco_bulletins_json.dict_decision_jury(
- etudid, formsemestre_id, with_decisions=True
+ etud, formsemestre, with_decisions=True
)
- d.update(but_validations.dict_decision_jury(etud, formsemestre))
descr_ues = [f"{u['acronyme']}: {u['code']}" for u in d.get("decision_ue", [])]
dec_annee = d.get("decision_annee")
@@ -2661,6 +2664,7 @@ def formsemestre_jury_but_erase(formsemestre_id: int, etudid: int = None):
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre)
deca.erase()
db.session.commit()
+ log(f"formsemestre_jury_but_erase({formsemestre_id}, {etudid})")
flash("décisions de jury effacées")
return redirect(dest_url)
diff --git a/sco_version.py b/sco_version.py
index 256794b73..83068bb61 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -1,7 +1,7 @@
# -*- mode: python -*-
# -*- coding: utf-8 -*-
-SCOVERSION = "9.3.16"
+SCOVERSION = "9.3.19"
SCONAME = "ScoDoc"
diff --git a/tests/unit/test_sco_basic.py b/tests/unit/test_sco_basic.py
index a00ab66e5..52ed79f0d 100644
--- a/tests/unit/test_sco_basic.py
+++ b/tests/unit/test_sco_basic.py
@@ -20,6 +20,7 @@ from config import TestConfig
from tests.unit import sco_fake_gen
import app
+from app import db
from app.comp import res_sem
from app.comp.res_compat import NotesTableCompat
from app.models import FormSemestre
@@ -31,8 +32,7 @@ from app.scodoc import sco_codes_parcours
from app.scodoc import sco_evaluations
from app.scodoc import sco_evaluation_db
from app.scodoc import sco_formsemestre_validation
-from app.scodoc import sco_parcours_dut
-from app.scodoc import sco_cache
+from app.scodoc import sco_cursus_dut
from app.scodoc import sco_saisie_notes
from app.scodoc import sco_utils as scu
@@ -194,20 +194,20 @@ def run_sco_basic(verbose=False):
# --- Permission saisie notes et décisions de jury, avec ou sans démission ou défaillance
# on n'a pas encore saisi de décisions
- assert not sco_parcours_dut.formsemestre_has_decisions(formsemestre_id)
+ assert not sco_cursus_dut.formsemestre_has_decisions(formsemestre_id)
# Saisie d'un décision AJ, non assidu
etudid = etuds[-1]["etudid"]
- sco_parcours_dut.formsemestre_validate_ues(
+ sco_cursus_dut.formsemestre_validate_ues(
formsemestre_id, etudid, sco_codes_parcours.AJ, False
)
- assert sco_parcours_dut.formsemestre_has_decisions(
+ assert sco_cursus_dut.formsemestre_has_decisions(
formsemestre_id
), "décisions manquantes"
# Suppression de la décision
sco_formsemestre_validation.formsemestre_validation_suppress_etud(
formsemestre_id, etudid
)
- assert not sco_parcours_dut.formsemestre_has_decisions(
+ assert not sco_cursus_dut.formsemestre_has_decisions(
formsemestre_id
), "décisions non effacées"