forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -329,6 +329,8 @@ def desassoc_ue_niveau(ue_id: int):
|
|||||||
ue.niveau_competence = None
|
ue.niveau_competence = None
|
||||||
db.session.add(ue)
|
db.session.add(ue)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
# Invalidation du cache
|
||||||
|
ue.formation.invalidate_cached_sems()
|
||||||
log(f"desassoc_ue_niveau: {ue}")
|
log(f"desassoc_ue_niveau: {ue}")
|
||||||
if g.scodoc_dept:
|
if g.scodoc_dept:
|
||||||
# "usage web"
|
# "usage web"
|
||||||
|
@ -21,7 +21,7 @@ def form_ue_choix_parcours(ue: UniteEns) -> str:
|
|||||||
return ""
|
return ""
|
||||||
ref_comp = ue.formation.referentiel_competence
|
ref_comp = ue.formation.referentiel_competence
|
||||||
if ref_comp is None:
|
if ref_comp is None:
|
||||||
return f"""<div class="ue_advanced">
|
return f"""<div class="scobox ue_advanced">
|
||||||
<div class="warning">Pas de référentiel de compétence associé à cette formation !</div>
|
<div class="warning">Pas de référentiel de compétence associé à cette formation !</div>
|
||||||
<div><a class="stdlink" href="{ url_for('notes.refcomp_assoc_formation',
|
<div><a class="stdlink" href="{ url_for('notes.refcomp_assoc_formation',
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=ue.formation.id)
|
scodoc_dept=g.scodoc_dept, formation_id=ue.formation.id)
|
||||||
@ -31,8 +31,8 @@ def form_ue_choix_parcours(ue: UniteEns) -> str:
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
"""
|
"""
|
||||||
<div class="ue_advanced">
|
<div class="scobox ue_advanced">
|
||||||
<h3>Parcours du BUT</h3>
|
<div class="scobox-title">Parcours du BUT</div>
|
||||||
"""
|
"""
|
||||||
]
|
]
|
||||||
# Choix des parcours
|
# Choix des parcours
|
||||||
@ -43,7 +43,6 @@ def form_ue_choix_parcours(ue: UniteEns) -> str:
|
|||||||
ue.get_ects(parcour, only_parcours=True) for parcour in ref_comp.parcours
|
ue.get_ects(parcour, only_parcours=True) for parcour in ref_comp.parcours
|
||||||
} != {None}
|
} != {None}
|
||||||
for parcour in ref_comp.parcours:
|
for parcour in ref_comp.parcours:
|
||||||
ects_parcour = ue.get_ects(parcour)
|
|
||||||
ects_parcour_txt = (
|
ects_parcour_txt = (
|
||||||
f" ({ue.get_ects(parcour):.3g} ects)" if ects_differents else ""
|
f" ({ue.get_ects(parcour):.3g} ects)" if ects_differents else ""
|
||||||
)
|
)
|
||||||
|
@ -298,27 +298,6 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
|||||||
cursus = formation.get_cursus()
|
cursus = formation.get_cursus()
|
||||||
is_apc = cursus.APC_SAE
|
is_apc = cursus.APC_SAE
|
||||||
semestres_indices = list(range(1, cursus.NB_SEM + 1))
|
semestres_indices = list(range(1, cursus.NB_SEM + 1))
|
||||||
H = [
|
|
||||||
html_sco_header.sco_header(page_title=title, javascripts=["js/edit_ue.js"]),
|
|
||||||
"<h2>" + title,
|
|
||||||
f" (formation {formation.acronyme}, version {formation.version})</h2>",
|
|
||||||
"""
|
|
||||||
<p class="help">Les UE sont des groupes de modules dans une formation donnée,
|
|
||||||
utilisés pour la validation (on calcule des moyennes par UE et applique des
|
|
||||||
seuils ("barres")).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="help">Note: sauf exception, l'UE n'a pas de coefficient associé.
|
|
||||||
Seuls les <em>modules</em> ont des coefficients.
|
|
||||||
</p>""",
|
|
||||||
(
|
|
||||||
f"""
|
|
||||||
<h4>UE du semestre S{ue.semestre_idx}</h4>
|
|
||||||
"""
|
|
||||||
if is_apc and ue
|
|
||||||
else ""
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
ue_types = cursus.ALLOWED_UE_TYPES
|
ue_types = cursus.ALLOWED_UE_TYPES
|
||||||
ue_types.sort()
|
ue_types.sort()
|
||||||
@ -489,7 +468,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
|||||||
if ue and is_apc:
|
if ue and is_apc:
|
||||||
ue_parcours_div = apc_edit_ue.form_ue_choix_parcours(ue)
|
ue_parcours_div = apc_edit_ue.form_ue_choix_parcours(ue)
|
||||||
if ue and ue.modules.count() and ue.semestre_idx is not None:
|
if ue and ue.modules.count() and ue.semestre_idx is not None:
|
||||||
modules_div = f"""<div id="ue_list_modules">
|
modules_div = f"""<div class="scobox" id="ue_list_modules">
|
||||||
<div><b>{ue.modules.count()} modules sont rattachés
|
<div><b>{ue.modules.count()} modules sont rattachés
|
||||||
à cette UE</b> du semestre S{ue.semestre_idx},
|
à cette UE</b> du semestre S{ue.semestre_idx},
|
||||||
elle ne peut donc pas être changée de semestre.</div>
|
elle ne peut donc pas être changée de semestre.</div>
|
||||||
@ -511,18 +490,34 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
|||||||
"""
|
"""
|
||||||
else:
|
else:
|
||||||
clone_form = ""
|
clone_form = ""
|
||||||
bonus_div = """<div id="bonus_description"></div>"""
|
|
||||||
ue_div = """<div id="ue_list_code" class="sco_box sco_green_bg"></div>"""
|
return f"""
|
||||||
return (
|
{html_sco_header.sco_header(page_title=title, javascripts=["js/edit_ue.js"])}
|
||||||
"\n".join(H)
|
<h2>{title}, (formation {formation.acronyme}, version {formation.version})</h2>
|
||||||
+ tf[1]
|
<p class="help">Les UEs sont des groupes de modules dans une formation donnée,
|
||||||
+ clone_form
|
utilisés pour la validation (on calcule des moyennes par UE et applique des
|
||||||
+ ue_parcours_div
|
seuils ("barres")).
|
||||||
+ modules_div
|
</p>
|
||||||
+ bonus_div
|
|
||||||
+ ue_div
|
<p class="help">Note: sauf exception, l'UE n'a pas de coefficient associé.
|
||||||
+ html_sco_header.sco_footer()
|
Seuls les <em>modules</em> ont des coefficients.
|
||||||
)
|
</p>
|
||||||
|
|
||||||
|
<div class="scobox">
|
||||||
|
<div class="scobox-title">
|
||||||
|
Édition de l'UE {('du semestre S'+str(ue.semestre_idx)) if is_apc and ue else ''}
|
||||||
|
</div>
|
||||||
|
{tf[1]}
|
||||||
|
</div>
|
||||||
|
{clone_form}
|
||||||
|
{ue_parcours_div}
|
||||||
|
{modules_div}
|
||||||
|
|
||||||
|
<div id="bonus_description"></div>
|
||||||
|
<div id="ue_list_code" class="sco_box sco_green_bg"></div>
|
||||||
|
|
||||||
|
{html_sco_header.sco_footer()}
|
||||||
|
"""
|
||||||
elif tf[0] == 1:
|
elif tf[0] == 1:
|
||||||
if create:
|
if create:
|
||||||
if not tf[2]["ue_code"]:
|
if not tf[2]["ue_code"]:
|
||||||
@ -1170,14 +1165,17 @@ def _ue_table_ues(
|
|||||||
if has_perm_change:
|
if has_perm_change:
|
||||||
H.append(
|
H.append(
|
||||||
f"""<a class="stdlink" href="{
|
f"""<a class="stdlink" href="{
|
||||||
url_for("notes.ue_set_internal", scodoc_dept=g.scodoc_dept, ue_id=ue["ue_id"])
|
url_for("notes.ue_set_internal",
|
||||||
|
scodoc_dept=g.scodoc_dept, ue_id=ue["ue_id"])
|
||||||
}">transformer en UE ordinaire</a> """
|
}">transformer en UE ordinaire</a> """
|
||||||
)
|
)
|
||||||
H.append("</span>")
|
H.append("</span>")
|
||||||
ue_editable = editable and not ue_is_locked(ue["ue_id"])
|
ue_editable = editable and not ue_is_locked(ue["ue_id"])
|
||||||
if ue_editable:
|
if ue_editable:
|
||||||
H.append(
|
H.append(
|
||||||
'<a class="stdlink" href="ue_edit?ue_id=%(ue_id)s">modifier</a>' % ue
|
f"""<a class="stdlink" href="{
|
||||||
|
url_for("notes.ue_edit", scodoc_dept=g.scodoc_dept, ue_id=ue["ue_id"])
|
||||||
|
}">modifier</a>"""
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
H.append('<span class="locked">[verrouillé]</span>')
|
H.append('<span class="locked">[verrouillé]</span>')
|
||||||
|
@ -45,7 +45,6 @@ from app import models
|
|||||||
from app.auth.models import User
|
from app.auth.models import User
|
||||||
from app.but import (
|
from app.but import (
|
||||||
apc_edit_ue,
|
apc_edit_ue,
|
||||||
bulletin_but_court, # ne pas enlever: ajoute des routes !
|
|
||||||
cursus_but,
|
cursus_but,
|
||||||
jury_edit_manual,
|
jury_edit_manual,
|
||||||
jury_but,
|
jury_but,
|
||||||
@ -53,6 +52,8 @@ from app.but import (
|
|||||||
jury_but_validation_auto,
|
jury_but_validation_auto,
|
||||||
jury_but_view,
|
jury_but_view,
|
||||||
)
|
)
|
||||||
|
from app.but import bulletin_but_court # ne pas enlever: ajoute des routes !
|
||||||
|
|
||||||
from app.but.forms import jury_but_forms
|
from app.but.forms import jury_but_forms
|
||||||
|
|
||||||
|
|
||||||
@ -449,12 +450,14 @@ sco_publish(
|
|||||||
Permission.EditFormation,
|
Permission.EditFormation,
|
||||||
methods=["GET", "POST"],
|
methods=["GET", "POST"],
|
||||||
)
|
)
|
||||||
sco_publish(
|
|
||||||
"/ue_edit",
|
|
||||||
sco_edit_ue.ue_edit,
|
@bp.route("/ue_edit/<int:ue_id>", methods=["GET", "POST"])
|
||||||
Permission.EditFormation,
|
@scodoc
|
||||||
methods=["GET", "POST"],
|
@permission_required(Permission.EditFormation)
|
||||||
)
|
def ue_edit(ue_id: int):
|
||||||
|
"Edition de l'UE"
|
||||||
|
return sco_edit_ue.ue_edit(ue_id)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/set_ue_niveau_competence", methods=["POST"])
|
@bp.route("/set_ue_niveau_competence", methods=["POST"])
|
||||||
@ -504,7 +507,7 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""):
|
|||||||
@bp.route("/ue_infos/<int:ue_id>")
|
@bp.route("/ue_infos/<int:ue_id>")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def ue_infos(ue_id):
|
def ue_infos(ue_id: int):
|
||||||
ue = UniteEns.query.get_or_404(ue_id)
|
ue = UniteEns.query.get_or_404(ue_id)
|
||||||
return sco_edit_apc.html_ue_infos(ue)
|
return sco_edit_apc.html_ue_infos(ue)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user