amélioration formulaire création module
This commit is contained in:
parent
154dc5283e
commit
4469d61221
@ -227,7 +227,6 @@ class BulletinBUT(ResultatsSemestreBUT):
|
||||
"date_debut": formsemestre.date_debut.isoformat(),
|
||||
"date_fin": formsemestre.date_fin.isoformat(),
|
||||
"annee_universitaire": self.formsemestre.annee_scolaire_str(),
|
||||
"inscription": "TODO-MM-JJ", # XXX TODO
|
||||
"numero": formsemestre.semestre_id,
|
||||
"groupes": [], # XXX TODO
|
||||
"absences": {
|
||||
|
@ -123,9 +123,6 @@ def module_create(
|
||||
Sinon, donne le choix de l'UE de rattachement et utilise la première
|
||||
matière de cette UE (si elle n'existe pas, la crée).
|
||||
"""
|
||||
from app.scodoc import sco_formations
|
||||
from app.scodoc import sco_edit_ue
|
||||
|
||||
if matiere_id:
|
||||
matiere = Matiere.query.get_or_404(matiere_id)
|
||||
ue = matiere.ue
|
||||
@ -160,7 +157,7 @@ def module_create(
|
||||
else:
|
||||
H += [
|
||||
f"""<h2>Création {object_name} dans la matière {matiere.titre},
|
||||
(UE {ue.acronyme})</h2>
|
||||
(UE {ue.acronyme}), semestre {ue.semestre_idx}</h2>
|
||||
"""
|
||||
]
|
||||
|
||||
@ -534,19 +531,15 @@ def module_edit(module_id=None):
|
||||
formsemestres=FormSemestre.query.filter(
|
||||
ModuleImpl.formsemestre_id == FormSemestre.id,
|
||||
ModuleImpl.module_id == module_id,
|
||||
).all(),
|
||||
)
|
||||
.order_by(FormSemestre.date_debut)
|
||||
.all(),
|
||||
),
|
||||
]
|
||||
if not unlocked:
|
||||
H.append(
|
||||
"""<div class="ue_warning"><span>Formation verrouillée, seuls certains éléments peuvent être modifiés</span></div>"""
|
||||
)
|
||||
if in_use:
|
||||
H.append(
|
||||
"""<div class="ue_warning"><span>Module déjà utilisé dans des semestres,
|
||||
soyez prudents !
|
||||
</span></div>"""
|
||||
)
|
||||
if is_apc:
|
||||
module_types = scu.ModuleType # tous les types
|
||||
else:
|
||||
@ -728,30 +721,9 @@ def module_edit(module_id=None):
|
||||
initvalues=module,
|
||||
submitlabel="Modifier ce module",
|
||||
)
|
||||
# Affiche liste des formseemstre utilisant ce module
|
||||
if in_use:
|
||||
formsemestre_ids = {modimpl.formsemestre_id for modimpl in a_module.modimpls}
|
||||
formsemestres = [FormSemestre.query.get(fid) for fid in formsemestre_ids]
|
||||
formsemestres.sort(key=lambda f: f.date_debut)
|
||||
items = [
|
||||
f"""<a class="stdlink" href="{
|
||||
url_for("notes.formsemestre_status", scodoc_dept=g.scodoc_dept, formsemestre_id=f.id )
|
||||
}">{f.titre}</a>"""
|
||||
for f in formsemestres
|
||||
]
|
||||
sem_descr = f"""
|
||||
<div class="ue_warning">
|
||||
<div>Ce module est utilisé dans les formsemestres suivants:</div>
|
||||
<ul><li>
|
||||
{"</li><li>".join( items )}
|
||||
</li></ul>
|
||||
</div>
|
||||
"""
|
||||
else:
|
||||
sem_descr = ""
|
||||
#
|
||||
if tf[0] == 0:
|
||||
return "\n".join(H) + tf[1] + sem_descr + html_sco_header.sco_footer()
|
||||
return "\n".join(H) + tf[1] + html_sco_header.sco_footer()
|
||||
elif tf[0] == -1:
|
||||
return flask.redirect(
|
||||
url_for(
|
||||
|
@ -244,18 +244,19 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
"""Formulaire modification ou création d'une UE"""
|
||||
create = int(create)
|
||||
if not create:
|
||||
U = ue_list(args={"ue_id": ue_id})
|
||||
if not U:
|
||||
raise ScoValueError("UE inexistante !")
|
||||
U = U[0]
|
||||
formation_id = U["formation_id"]
|
||||
title = "Modification de l'UE %(titre)s" % U
|
||||
initvalues = U
|
||||
ue: UniteEns = UniteEns.query.get_or_404(ue_id)
|
||||
ue_dict = ue.to_dict()
|
||||
formation_id = ue.formation_id
|
||||
title = f"Modification de l'UE {ue.acronyme} {ue.titre}"
|
||||
initvalues = ue_dict
|
||||
submitlabel = "Modifier les valeurs"
|
||||
can_change_semestre_id = ue.modules.count() == 0
|
||||
else:
|
||||
ue = None
|
||||
title = "Création d'une UE"
|
||||
initvalues = {"semestre_idx": default_semestre_idx}
|
||||
submitlabel = "Créer cette UE"
|
||||
can_change_semestre_id = True
|
||||
formation = Formation.query.get(formation_id)
|
||||
if not formation:
|
||||
raise ScoValueError(f"Formation inexistante ! (id={formation_id})")
|
||||
@ -282,7 +283,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
ue_types_names = [sco_codes_parcours.UE_TYPE_NAME[k] for k in ue_types]
|
||||
ue_types = [str(x) for x in ue_types]
|
||||
|
||||
fw = [
|
||||
form_descr = [
|
||||
("ue_id", {"input_type": "hidden"}),
|
||||
("create", {"input_type": "hidden", "default": create}),
|
||||
("formation_id", {"input_type": "hidden", "default": formation_id}),
|
||||
@ -296,6 +297,9 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
"type": "int",
|
||||
},
|
||||
),
|
||||
]
|
||||
if can_change_semestre_id:
|
||||
form_descr += [
|
||||
(
|
||||
"semestre_idx",
|
||||
{
|
||||
@ -303,11 +307,18 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
"type": "int",
|
||||
"allow_null": False,
|
||||
"title": parcours.SESSION_NAME.capitalize(),
|
||||
"explanation": "%s de l'UE dans la formation" % parcours.SESSION_NAME,
|
||||
"explanation": "%s de l'UE dans la formation"
|
||||
% parcours.SESSION_NAME,
|
||||
"labels": ["non spécifié"] + [str(x) for x in semestres_indices],
|
||||
"allowed_values": [""] + semestres_indices,
|
||||
},
|
||||
),
|
||||
]
|
||||
else:
|
||||
form_descr += [
|
||||
("semestre_idx", {"default": ue.semestre_idx, "input_type": "hidden"}),
|
||||
]
|
||||
form_descr += [
|
||||
(
|
||||
"type",
|
||||
{
|
||||
@ -377,7 +388,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
),
|
||||
]
|
||||
if create and not parcours.UE_IS_MODULE and not is_apc:
|
||||
fw.append(
|
||||
form_descr.append(
|
||||
(
|
||||
"create_matiere",
|
||||
{
|
||||
@ -391,14 +402,33 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
tf = TrivialFormulator(
|
||||
request.base_url,
|
||||
scu.get_request_args(),
|
||||
fw,
|
||||
form_descr,
|
||||
initvalues=initvalues,
|
||||
submitlabel=submitlabel,
|
||||
)
|
||||
if tf[0] == 0:
|
||||
ue_div = """<div id="ue_list_code"></div>"""
|
||||
if ue and ue.modules.count():
|
||||
modules_div = f"""<div id="ue_list_modules">
|
||||
<div><b>{ue.modules.count()} modules sont rattachés
|
||||
à cette UE</b> du semestre S{ue.semestre_idx},
|
||||
elle ne peut donc pas être changée de semestre.</div>
|
||||
<ul>"""
|
||||
for m in ue.modules:
|
||||
modules_div += f"""<li><a class="stdlink" href="{url_for(
|
||||
"notes.module_edit",scodoc_dept=g.scodoc_dept, module_id=m.id)}">{m.code} {m.titre}</a></li>"""
|
||||
modules_div += """</ul></div>"""
|
||||
else:
|
||||
modules_div = ""
|
||||
bonus_div = """<div id="bonus_description"></div>"""
|
||||
return "\n".join(H) + tf[1] + bonus_div + ue_div + html_sco_header.sco_footer()
|
||||
ue_div = """<div id="ue_list_code"></div>"""
|
||||
return (
|
||||
"\n".join(H)
|
||||
+ tf[1]
|
||||
+ modules_div
|
||||
+ bonus_div
|
||||
+ ue_div
|
||||
+ html_sco_header.sco_footer()
|
||||
)
|
||||
else:
|
||||
if create:
|
||||
if not tf[2]["ue_code"]:
|
||||
|
@ -1771,18 +1771,28 @@ ul.notes_module_list {
|
||||
}
|
||||
|
||||
div#ue_list_code {
|
||||
background-color: rgb(220,220,220);
|
||||
font-size: small;
|
||||
padding-left: 4px;
|
||||
padding-bottom: 1px;
|
||||
background-color: rgb(155, 218, 155);
|
||||
padding: 10px;
|
||||
border: 1px solid blue;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
margin-top: 10px;
|
||||
margin: 3ex;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
ul.notes_module_list {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
div#ue_list_modules {
|
||||
background-color: rgb(191, 242, 255);
|
||||
border: 1px solid blue;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
margin-top: 10px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
div#ue_list_etud_validations {
|
||||
background-color: rgb(220,250,220);
|
||||
padding-left: 4px;
|
||||
@ -1799,12 +1809,16 @@ span.ue_share {
|
||||
|
||||
div.ue_warning {
|
||||
border: 1px solid red;
|
||||
border-radius: 10px;
|
||||
background-color: rgb(250,220,220);
|
||||
margin: 3ex;
|
||||
padding-left: 1ex;
|
||||
padding-right: 1ex;
|
||||
margin-top: 10px;
|
||||
margin-right: 15px;
|
||||
margin-bottom: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
div.ue_warning:first-child {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.ue_warning span:before {
|
||||
content: url(/ScoDoc/static/icons/warning_img.png);
|
||||
vertical-align: -80%;
|
||||
|
@ -1,3 +1,4 @@
|
||||
{# -*- mode: jinja-html -*- #}
|
||||
<div class="help">
|
||||
<p class="help">
|
||||
Les modules sont décrits dans le programme pédagogique. Un module est pour ce
|
||||
@ -24,16 +25,18 @@
|
||||
<a href="https://scodoc.org/BUT" target="_blank">la documentation</a>.
|
||||
</p>
|
||||
{%endif%}
|
||||
</div>
|
||||
|
||||
{% if formsemestres %}
|
||||
<p class="help">
|
||||
{% if formsemestres %}
|
||||
<div class="ue_warning"> <span><b>Module déjà utilisé dans des semestres, soyez prudents !</b></span>
|
||||
<p class="help">
|
||||
Ce module est utilisé dans des semestres déjà mis en place, il faut prêter attention
|
||||
aux conséquences des changements effectués ici: par exemple les coefficients vont modifier
|
||||
les notes moyennes calculées. Les modules déjà utilisés ne peuvent pas être changés de semestre, ni détruits.
|
||||
Si vous souhaitez faire cela, allez d'abord modifier les semestres concernés pour déselectionner le module.
|
||||
</p>
|
||||
<h4>Semestres utilisant ce module:</h4>
|
||||
<ul>
|
||||
</p>
|
||||
<h4>Semestres utilisant ce module:</h4>
|
||||
<ul>
|
||||
{%for formsemestre in formsemestres %}
|
||||
<li><a class="stdlink" href="{{
|
||||
url_for('notes.formsemestre_status',
|
||||
@ -41,7 +44,7 @@
|
||||
}}">{{formsemestre.titre_mois()}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{%endif%}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
{%endif%}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user