forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -838,16 +838,6 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
|
|||||||
H.append(
|
H.append(
|
||||||
f"""
|
f"""
|
||||||
<div>
|
<div>
|
||||||
<a class="stdlink" href="{
|
|
||||||
url_for("assiduites.visu_assiduites_group",
|
|
||||||
scodoc_dept=g.scodoc_dept,
|
|
||||||
formsemestre_id=formsemestre.id,
|
|
||||||
jour = datetime.date.today().isoformat(),
|
|
||||||
group_ids=group.id,
|
|
||||||
)}">
|
|
||||||
Visualiser</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a class="stdlink" href="{
|
<a class="stdlink" href="{
|
||||||
url_for("assiduites.signal_assiduites_group",
|
url_for("assiduites.signal_assiduites_group",
|
||||||
scodoc_dept=g.scodoc_dept,
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
@ -958,8 +958,6 @@ def choix_date() -> str:
|
|||||||
Route utilisée uniquement si la date courante n'est pas dans le semestre
|
Route utilisée uniquement si la date courante n'est pas dans le semestre
|
||||||
concerné par la requête vers une des pages suivantes :
|
concerné par la requête vers une des pages suivantes :
|
||||||
- saisie_assiduites_group
|
- saisie_assiduites_group
|
||||||
- visu_assiduites_group
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
formsemestre_id = request.args.get("formsemestre_id")
|
formsemestre_id = request.args.get("formsemestre_id")
|
||||||
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||||
@ -989,11 +987,7 @@ def choix_date() -> str:
|
|||||||
if ok:
|
if ok:
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for(
|
url_for(
|
||||||
(
|
"assiduites.signal_assiduites_group",
|
||||||
"assiduites.signal_assiduites_group"
|
|
||||||
if request.args.get("readonly") is None
|
|
||||||
else "assiduites.visu_assiduites_group"
|
|
||||||
),
|
|
||||||
scodoc_dept=g.scodoc_dept,
|
scodoc_dept=g.scodoc_dept,
|
||||||
formsemestre_id=formsemestre_id,
|
formsemestre_id=formsemestre_id,
|
||||||
group_ids=group_ids,
|
group_ids=group_ids,
|
||||||
@ -1160,136 +1154,6 @@ def signal_assiduites_group():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/visu_assiduites_group")
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def visu_assiduites_group():
|
|
||||||
"""
|
|
||||||
Visualisation des assiduités des groupes pour le jour donné
|
|
||||||
dans le formsemestre_id et le moduleimpl_id
|
|
||||||
Returns:
|
|
||||||
str: l'html généré
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Récupération des paramètres de la requête
|
|
||||||
formsemestre_id: int = request.args.get("formsemestre_id", -1)
|
|
||||||
moduleimpl_id: int = request.args.get("moduleimpl_id")
|
|
||||||
date: str = request.args.get("jour", datetime.date.today().isoformat())
|
|
||||||
group_ids: list[int] = request.args.get("group_ids", None)
|
|
||||||
if group_ids is None:
|
|
||||||
group_ids = []
|
|
||||||
else:
|
|
||||||
group_ids = group_ids.split(",")
|
|
||||||
map(str, group_ids)
|
|
||||||
|
|
||||||
# Vérification du moduleimpl_id
|
|
||||||
if moduleimpl_id is not None:
|
|
||||||
try:
|
|
||||||
moduleimpl_id = int(moduleimpl_id)
|
|
||||||
except (TypeError, ValueError) as exc:
|
|
||||||
raise ScoValueError("identifiant de moduleimpl invalide") from exc
|
|
||||||
# Vérification du formsemestre_id
|
|
||||||
if formsemestre_id is not None:
|
|
||||||
try:
|
|
||||||
formsemestre_id = int(formsemestre_id)
|
|
||||||
except (TypeError, ValueError) as exc:
|
|
||||||
raise ScoValueError("identifiant de formsemestre invalide") from exc
|
|
||||||
|
|
||||||
# Récupérations des/du groupe(s)
|
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
|
||||||
group_ids, moduleimpl_id=moduleimpl_id, formsemestre_id=formsemestre_id
|
|
||||||
)
|
|
||||||
if not groups_infos.members:
|
|
||||||
return (
|
|
||||||
html_sco_header.sco_header(page_title="Saisie journalière de l'assiduité")
|
|
||||||
+ "<h3>Aucun étudiant ! </h3>"
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- Filtrage par formsemestre ---
|
|
||||||
formsemestre_id = groups_infos.formsemestre_id
|
|
||||||
|
|
||||||
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
|
||||||
if formsemestre.dept_id != g.scodoc_dept_id:
|
|
||||||
abort(404, "groupes inexistants dans ce département")
|
|
||||||
|
|
||||||
# Récupération des étudiants du/des groupe(s)
|
|
||||||
etuds = [
|
|
||||||
sco_etud.get_etud_info(etudid=m["etudid"], filled=True)[0]
|
|
||||||
for m in groups_infos.members
|
|
||||||
]
|
|
||||||
|
|
||||||
# --- Vérification de la date ---
|
|
||||||
real_date = scu.is_iso_formated(date, True).date()
|
|
||||||
if real_date < formsemestre.date_debut or real_date > formsemestre.date_fin:
|
|
||||||
# Si le jour est hors semestre, renvoyer vers choix date
|
|
||||||
return redirect(
|
|
||||||
url_for(
|
|
||||||
"assiduites.choix_date",
|
|
||||||
formsemestre_id=formsemestre_id,
|
|
||||||
group_ids=group_ids,
|
|
||||||
moduleimpl_id=moduleimpl_id,
|
|
||||||
scodoc_dept=g.scodoc_dept,
|
|
||||||
readonly="true",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- Restriction en fonction du moduleimpl_id ---
|
|
||||||
if moduleimpl_id:
|
|
||||||
mod_inscrits = {
|
|
||||||
x["etudid"]
|
|
||||||
for x in sco_moduleimpl.do_moduleimpl_inscription_list(
|
|
||||||
moduleimpl_id=moduleimpl_id
|
|
||||||
)
|
|
||||||
}
|
|
||||||
etuds_inscrits_module = [e for e in etuds if e["etudid"] in mod_inscrits]
|
|
||||||
if etuds_inscrits_module:
|
|
||||||
etuds = etuds_inscrits_module
|
|
||||||
else:
|
|
||||||
# Si aucun etudiant n'est inscrit au module choisi...
|
|
||||||
moduleimpl_id = None
|
|
||||||
|
|
||||||
# --- Génération du HTML ---
|
|
||||||
|
|
||||||
if groups_infos.tous_les_etuds_du_sem:
|
|
||||||
gr_tit = "en"
|
|
||||||
else:
|
|
||||||
if len(groups_infos.group_ids) > 1:
|
|
||||||
grp = "des groupes"
|
|
||||||
else:
|
|
||||||
grp = "du groupe"
|
|
||||||
gr_tit = (
|
|
||||||
grp + ' <span class="fontred">' + groups_infos.groups_titles + "</span>"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Récupération du semestre en dictionnaire
|
|
||||||
sem = formsemestre.to_dict()
|
|
||||||
|
|
||||||
return render_template(
|
|
||||||
"assiduites/pages/signal_assiduites_group.j2",
|
|
||||||
date=_dateiso_to_datefr(date),
|
|
||||||
defdem=_get_etuds_dem_def(formsemestre),
|
|
||||||
forcer_module=sco_preferences.get_preference(
|
|
||||||
"forcer_module",
|
|
||||||
formsemestre_id=formsemestre_id,
|
|
||||||
dept_id=g.scodoc_dept_id,
|
|
||||||
),
|
|
||||||
formsemestre_date_debut=str(formsemestre.date_debut),
|
|
||||||
formsemestre_date_fin=str(formsemestre.date_fin),
|
|
||||||
formsemestre_id=formsemestre_id,
|
|
||||||
gr_tit=gr_tit,
|
|
||||||
grp=sco_groups_view.menu_groups_choice(groups_infos),
|
|
||||||
minitimeline=_mini_timeline(),
|
|
||||||
moduleimpl_select=_module_selector(formsemestre, moduleimpl_id),
|
|
||||||
nonworkdays=_non_work_days(),
|
|
||||||
sem=sem["titre_num"],
|
|
||||||
timeline=_timeline(),
|
|
||||||
readonly="true",
|
|
||||||
sco=ScoData(formsemestre=formsemestre),
|
|
||||||
title="Saisie journalière de l'assiduité",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class RowEtudWithAssi(RowEtud):
|
class RowEtudWithAssi(RowEtud):
|
||||||
"""Ligne de la table d'étudiants avec colonne Assiduité"""
|
"""Ligne de la table d'étudiants avec colonne Assiduité"""
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user