forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -148,7 +148,7 @@ def evaluation_notes(evaluation_id: int):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.EnsView)
|
@permission_required(Permission.EnsView)
|
||||||
@as_json
|
@as_json
|
||||||
def evaluation_set_notes(evaluation_id: int):
|
def evaluation_set_notes(evaluation_id: int): # evaluation-notes-set
|
||||||
"""Écriture de notes dans une évaluation.
|
"""Écriture de notes dans une évaluation.
|
||||||
The request content type should be "application/json",
|
The request content type should be "application/json",
|
||||||
and contains:
|
and contains:
|
||||||
|
@ -400,6 +400,7 @@ class FormSemestre(db.Model):
|
|||||||
"""Liste des modimpls du semestre (y compris bonus)
|
"""Liste des modimpls du semestre (y compris bonus)
|
||||||
- triée par type/numéro/code en APC
|
- triée par type/numéro/code en APC
|
||||||
- triée par numéros d'UE/matières/modules pour les formations standard.
|
- triée par numéros d'UE/matières/modules pour les formations standard.
|
||||||
|
Hors APC, élimine les modules de type ressources et SAEs.
|
||||||
"""
|
"""
|
||||||
modimpls = self.modimpls.all()
|
modimpls = self.modimpls.all()
|
||||||
if self.formation.is_apc():
|
if self.formation.is_apc():
|
||||||
@ -411,6 +412,14 @@ class FormSemestre(db.Model):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
modimpls = [
|
||||||
|
mi
|
||||||
|
for mi in modimpls
|
||||||
|
if (
|
||||||
|
mi.module.module_type
|
||||||
|
not in (scu.ModuleType.RESSOURCE, scu.ModuleType.SAE)
|
||||||
|
)
|
||||||
|
]
|
||||||
modimpls.sort(
|
modimpls.sort(
|
||||||
key=lambda m: (
|
key=lambda m: (
|
||||||
m.module.ue.numero or 0,
|
m.module.ue.numero or 0,
|
||||||
|
@ -117,7 +117,7 @@ def do_ue_create(args):
|
|||||||
ues = ue_list({"formation_id": args["formation_id"], "acronyme": args["acronyme"]})
|
ues = ue_list({"formation_id": args["formation_id"], "acronyme": args["acronyme"]})
|
||||||
if ues:
|
if ues:
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé !
|
f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé !
|
||||||
(chaque UE doit avoir un acronyme unique dans la formation)"""
|
(chaque UE doit avoir un acronyme unique dans la formation)"""
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
@ -420,8 +420,8 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
|||||||
"size": 12,
|
"size": 12,
|
||||||
"title": "Code UE",
|
"title": "Code UE",
|
||||||
"max_length": SHORT_STR_LEN,
|
"max_length": SHORT_STR_LEN,
|
||||||
"explanation": """code interne (non vide). Toutes les UE partageant le même code
|
"explanation": """code interne (non vide). Toutes les UE partageant le même code
|
||||||
(et le même code de formation) sont compatibles (compensation de semestres, capitalisation d'UE).
|
(et le même code de formation) sont compatibles (compensation de semestres, capitalisation d'UE).
|
||||||
Voir liste ci-dessous.""",
|
Voir liste ci-dessous.""",
|
||||||
"allow_null": False,
|
"allow_null": False,
|
||||||
},
|
},
|
||||||
@ -764,7 +764,7 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""): # was ue_list
|
|||||||
H.append(
|
H.append(
|
||||||
"""<p class="help">Cette formation est verrouillée car
|
"""<p class="help">Cette formation est verrouillée car
|
||||||
des semestres verrouillés s'y réferent.
|
des semestres verrouillés s'y réferent.
|
||||||
Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module),
|
Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module),
|
||||||
vous devez:
|
vous devez:
|
||||||
</p>
|
</p>
|
||||||
<ul class="help">
|
<ul class="help">
|
||||||
@ -827,7 +827,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
msg_refcomp = "associer à un référentiel de compétences"
|
msg_refcomp = "associer à un référentiel de compétences"
|
||||||
else:
|
else:
|
||||||
descr_refcomp = f"""Référentiel de compétences:
|
descr_refcomp = f"""Référentiel de compétences:
|
||||||
<a href="{url_for('notes.refcomp_show',
|
<a href="{url_for('notes.refcomp_show',
|
||||||
scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id)}"
|
scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id)}"
|
||||||
class="stdlink">
|
class="stdlink">
|
||||||
{formation.referentiel_competence.type_titre}
|
{formation.referentiel_competence.type_titre}
|
||||||
@ -856,7 +856,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
)
|
)
|
||||||
for parc in formation.referentiel_competence.parcours:
|
for parc in formation.referentiel_competence.parcours:
|
||||||
H.append(
|
H.append(
|
||||||
f"""<div><a href="{url_for("notes.parcour_formation",
|
f"""<div><a href="{url_for("notes.parcour_formation",
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=formation.id, parcour_id=parc.id )
|
scodoc_dept=g.scodoc_dept, formation_id=formation.id, parcour_id=parc.id )
|
||||||
}">{parc.code}</a></div>"""
|
}">{parc.code}</a></div>"""
|
||||||
)
|
)
|
||||||
@ -865,7 +865,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
H.append(
|
H.append(
|
||||||
f"""
|
f"""
|
||||||
<li> <a class="stdlink" href="{
|
<li> <a class="stdlink" href="{
|
||||||
url_for('notes.edit_modules_ue_coefs',
|
url_for('notes.edit_modules_ue_coefs',
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=formation_id, semestre_idx=semestre_idx)
|
scodoc_dept=g.scodoc_dept, formation_id=formation_id, semestre_idx=semestre_idx)
|
||||||
}">{'Visualiser' if locked else 'Éditer'} les coefficients des ressources et SAÉs</a>
|
}">{'Visualiser' if locked else 'Éditer'} les coefficients des ressources et SAÉs</a>
|
||||||
</li>
|
</li>
|
||||||
@ -915,7 +915,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
}">Ajouter une UE</a>
|
}">Ajouter une UE</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="{
|
<li><a href="{
|
||||||
url_for('notes.formation_add_malus_modules',
|
url_for('notes.formation_add_malus_modules',
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=formation_id)
|
scodoc_dept=g.scodoc_dept, formation_id=formation_id)
|
||||||
}" class="stdlink">Ajouter des modules de malus dans chaque UE</a>
|
}" class="stdlink">Ajouter des modules de malus dans chaque UE</a>
|
||||||
</li>
|
</li>
|
||||||
@ -956,14 +956,14 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
)
|
)
|
||||||
}">Créer une nouvelle version de la formation</a> (copie non verrouillée)
|
}">Créer une nouvelle version de la formation</a> (copie non verrouillée)
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
if not len(formsemestres):
|
if not len(formsemestres):
|
||||||
H.append(
|
H.append(
|
||||||
f"""
|
f"""
|
||||||
<li><a class="stdlink" href="{
|
<li><a class="stdlink" href="{
|
||||||
url_for('notes.formation_delete',
|
url_for('notes.formation_delete',
|
||||||
scodoc_dept=g.scodoc_dept, formation_id=formation_id
|
scodoc_dept=g.scodoc_dept, formation_id=formation_id
|
||||||
)
|
)
|
||||||
}">Supprimer cette formation</a> (pas encore utilisée par des semestres)
|
}">Supprimer cette formation</a> (pas encore utilisée par des semestres)
|
||||||
@ -976,7 +976,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
|
|||||||
url_for('notes.formation_table_recap', scodoc_dept=g.scodoc_dept,
|
url_for('notes.formation_table_recap', scodoc_dept=g.scodoc_dept,
|
||||||
formation_id=formation_id)
|
formation_id=formation_id)
|
||||||
}">Table récapitulative de la formation</a>
|
}">Table récapitulative de la formation</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a class="stdlink" href="{
|
<li><a class="stdlink" href="{
|
||||||
url_for('notes.formation_export', scodoc_dept=g.scodoc_dept,
|
url_for('notes.formation_export', scodoc_dept=g.scodoc_dept,
|
||||||
formation_id=formation_id, fmt='xml')
|
formation_id=formation_id, fmt='xml')
|
||||||
@ -1050,9 +1050,9 @@ def _html_select_semestre_idx(formation_id, semestre_ids, semestre_idx):
|
|||||||
else:
|
else:
|
||||||
label = f"S{i}"
|
label = f"S{i}"
|
||||||
htm += f"""<option value="{i}" {
|
htm += f"""<option value="{i}" {
|
||||||
'selected'
|
'selected'
|
||||||
if (semestre_idx == i)
|
if (semestre_idx == i)
|
||||||
or (i == "all" and semestre_idx is None)
|
or (i == "all" and semestre_idx is None)
|
||||||
else ''
|
else ''
|
||||||
}>{label}</option>
|
}>{label}</option>
|
||||||
"""
|
"""
|
||||||
@ -1172,7 +1172,7 @@ def _ue_table_ues(
|
|||||||
)
|
)
|
||||||
if (iue >= len(ues) - 1) or ue["semestre_id"] != ues[iue + 1]["semestre_id"]:
|
if (iue >= len(ues) - 1) or ue["semestre_id"] != ues[iue + 1]["semestre_id"]:
|
||||||
H.append(
|
H.append(
|
||||||
f"""</ul><ul><li><a href="{url_for('notes.ue_create', scodoc_dept=g.scodoc_dept,
|
f"""</ul><ul><li><a href="{url_for('notes.ue_create', scodoc_dept=g.scodoc_dept,
|
||||||
formation_id=ue['formation_id'], semestre_idx=ue['semestre_id'])
|
formation_id=ue['formation_id'], semestre_idx=ue['semestre_id'])
|
||||||
}">Ajouter une UE dans le semestre {ue['semestre_id'] or ''}</a></li></ul>
|
}">Ajouter une UE dans le semestre {ue['semestre_id'] or ''}</a></li></ul>
|
||||||
</div>
|
</div>
|
||||||
@ -1205,7 +1205,7 @@ def _ue_table_matieres(
|
|||||||
if editable and not sco_edit_matiere.matiere_is_locked(mat["matiere_id"]):
|
if editable and not sco_edit_matiere.matiere_is_locked(mat["matiere_id"]):
|
||||||
H.append(
|
H.append(
|
||||||
f"""<a class="stdlink" href="{
|
f"""<a class="stdlink" href="{
|
||||||
url_for("notes.matiere_edit",
|
url_for("notes.matiere_edit",
|
||||||
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])
|
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])
|
||||||
}">
|
}">
|
||||||
"""
|
"""
|
||||||
@ -1314,6 +1314,10 @@ def _ue_table_modules(
|
|||||||
'<a class="discretelink" title="Modifier le module numéro %(numero)s, utilisé par %(nb_moduleimpls)d sessions" href="module_edit?module_id=%(module_id)s">'
|
'<a class="discretelink" title="Modifier le module numéro %(numero)s, utilisé par %(nb_moduleimpls)d sessions" href="module_edit?module_id=%(module_id)s">'
|
||||||
% mod
|
% mod
|
||||||
)
|
)
|
||||||
|
if mod["module_type"] not in (scu.ModuleType.STANDARD, scu.ModuleType.MALUS):
|
||||||
|
H.append(
|
||||||
|
f"""<span class="invalid-module-type">{scu.EMO_WARNING} type incompatible </span>"""
|
||||||
|
)
|
||||||
H.append(
|
H.append(
|
||||||
'<span class="formation_module_tit">%s</span>'
|
'<span class="formation_module_tit">%s</span>'
|
||||||
% scu.join_words(mod["code"], mod["titre"])
|
% scu.join_words(mod["code"], mod["titre"])
|
||||||
@ -1358,7 +1362,7 @@ def _ue_table_modules(
|
|||||||
if editable and add_suppress_link:
|
if editable and add_suppress_link:
|
||||||
H.append(
|
H.append(
|
||||||
f"""<a class="stdlink" href="{
|
f"""<a class="stdlink" href="{
|
||||||
url_for("notes.matiere_delete",
|
url_for("notes.matiere_delete",
|
||||||
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])}"
|
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])}"
|
||||||
>la supprimer</a>
|
>la supprimer</a>
|
||||||
"""
|
"""
|
||||||
@ -1367,7 +1371,7 @@ def _ue_table_modules(
|
|||||||
if editable: # and ((not parcours.UE_IS_MODULE) or len(Modlist) == 0):
|
if editable: # and ((not parcours.UE_IS_MODULE) or len(Modlist) == 0):
|
||||||
H.append(
|
H.append(
|
||||||
f"""<li> <a class="stdlink" href="{
|
f"""<li> <a class="stdlink" href="{
|
||||||
url_for("notes.module_create",
|
url_for("notes.module_create",
|
||||||
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])}"
|
scodoc_dept=g.scodoc_dept, matiere_id=mat["matiere_id"])}"
|
||||||
>{create_element_msg}</a></li>
|
>{create_element_msg}</a></li>
|
||||||
"""
|
"""
|
||||||
@ -1451,7 +1455,7 @@ def do_ue_edit(args, bypass_lock=False, dont_invalidate_cache=False):
|
|||||||
ues = ue_list({"formation_id": ue["formation_id"], "acronyme": new_acro})
|
ues = ue_list({"formation_id": ue["formation_id"], "acronyme": new_acro})
|
||||||
if ues and ues[0]["ue_id"] != ue_id:
|
if ues and ues[0]["ue_id"] != ue_id:
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé !
|
f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé !
|
||||||
(chaque UE doit avoir un acronyme unique dans la formation.)"""
|
(chaque UE doit avoir un acronyme unique dans la formation.)"""
|
||||||
)
|
)
|
||||||
# On ne peut pas supprimer le code UE:
|
# On ne peut pas supprimer le code UE:
|
||||||
|
@ -257,6 +257,13 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N
|
|||||||
.order_by(Module.module_type, UniteEns.numero, Module.numero)
|
.order_by(Module.module_type, UniteEns.numero, Module.numero)
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
|
# Elimine les ressources et SAE sauf si déjà dans le semestre
|
||||||
|
modules = [
|
||||||
|
m
|
||||||
|
for m in modules
|
||||||
|
if (m.module_type not in (scu.ModuleType.RESSOURCE, scu.ModuleType.SAE))
|
||||||
|
or m.id in module_ids_set
|
||||||
|
]
|
||||||
# Pour regroupement des modules par semestres:
|
# Pour regroupement des modules par semestres:
|
||||||
semestre_ids = {}
|
semestre_ids = {}
|
||||||
for mod in modules:
|
for mod in modules:
|
||||||
|
@ -1176,11 +1176,18 @@ def formsemestre_status(formsemestre_id=None, check_parcours=True):
|
|||||||
H += [_TABLEAU_MODULES_FOOT, "</div>"]
|
H += [_TABLEAU_MODULES_FOOT, "</div>"]
|
||||||
else:
|
else:
|
||||||
# formations classiques: groupe par UE
|
# formations classiques: groupe par UE
|
||||||
|
# élimine les modules BUT qui aurait pu se glisser là suite à un
|
||||||
|
# changement de type de formation par exemple
|
||||||
|
modimpls_classic = [
|
||||||
|
m
|
||||||
|
for m in modimpls
|
||||||
|
if m["module"]["module_type"] not in (ModuleType.RESSOURCE, ModuleType.SAE)
|
||||||
|
]
|
||||||
H += [
|
H += [
|
||||||
"<p>",
|
"<p>",
|
||||||
_TABLEAU_MODULES_HEAD,
|
_TABLEAU_MODULES_HEAD,
|
||||||
formsemestre_tableau_modules(
|
formsemestre_tableau_modules(
|
||||||
modimpls,
|
modimpls_classic,
|
||||||
nt,
|
nt,
|
||||||
formsemestre,
|
formsemestre,
|
||||||
can_edit=can_edit,
|
can_edit=can_edit,
|
||||||
|
@ -2464,6 +2464,11 @@ li.module_malus span.formation_module_tit {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span.invalid-module-type {
|
||||||
|
color: red;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
span.formation_module_ue {
|
span.formation_module_ue {
|
||||||
color: #6e7d92;
|
color: #6e7d92;
|
||||||
font-size: 75%;
|
font-size: 75%;
|
||||||
|
Loading…
Reference in New Issue
Block a user