forked from ScoDoc/ScoDoc
Tableau suivi cohortes: prend en compte la décision annuelle et non semestrielle en BUT.
This commit is contained in:
parent
df00954bcc
commit
f333975ec5
@ -524,11 +524,11 @@ def table_suivi_cohorte(
|
||||
# 3-- Regroupe les semestres par date de debut
|
||||
P = [] # liste de periodsem
|
||||
|
||||
class periodsem(object):
|
||||
class PeriodSem:
|
||||
pass
|
||||
|
||||
# semestre de depart:
|
||||
porigin = periodsem()
|
||||
porigin = PeriodSem()
|
||||
d, m, y = [int(x) for x in sem["date_debut"].split("/")]
|
||||
porigin.datedebut = datetime.datetime(y, m, d)
|
||||
porigin.sems = [sem]
|
||||
@ -543,7 +543,7 @@ def table_suivi_cohorte(
|
||||
merged = True
|
||||
break
|
||||
if not merged:
|
||||
p = periodsem()
|
||||
p = PeriodSem()
|
||||
p.datedebut = s["date_debut_dt"]
|
||||
p.sems = [s]
|
||||
P.append(p)
|
||||
@ -743,7 +743,7 @@ def formsemestre_suivi_cohorte(
|
||||
civilite=None,
|
||||
statut="",
|
||||
only_primo=False,
|
||||
):
|
||||
) -> str:
|
||||
"""Affiche suivi cohortes par numero de semestre"""
|
||||
annee_bac = str(annee_bac or "")
|
||||
annee_admission = str(annee_admission or "")
|
||||
@ -794,14 +794,6 @@ def formsemestre_suivi_cohorte(
|
||||
'<p><a href="%s&percent=1">Afficher les résultats en pourcentages</a></p>'
|
||||
% burl
|
||||
)
|
||||
help = (
|
||||
pplink
|
||||
+ """
|
||||
<p class="help">Nombre d'étudiants dans chaque semestre. Les dates indiquées sont les dates approximatives de <b>début</b> des semestres (les semestres commençant à des dates proches sont groupés). Le nombre de diplômés est celui à la <b>fin</b> du semestre correspondant. Lorsqu'il y a moins de %s étudiants dans une case, vous pouvez afficher leurs noms en passant le curseur sur le chiffre.</p>
|
||||
<p class="help">Les menus permettent de n'étudier que certaines catégories d'étudiants (titulaires d'un type de bac, garçons ou filles). La case "restreindre aux primo-entrants" permet de ne considérer que les étudiants qui n'ont jamais été inscrits dans ScoDoc avant le semestre considéré.</p>
|
||||
"""
|
||||
% (MAX_ETUD_IN_DESCR,)
|
||||
)
|
||||
|
||||
H = [
|
||||
html_sco_header.sco_header(page_title=tab.page_title),
|
||||
@ -824,7 +816,20 @@ def formsemestre_suivi_cohorte(
|
||||
percent=percent,
|
||||
),
|
||||
t,
|
||||
help,
|
||||
f"""{pplink}
|
||||
<p class="help">Nombre d'étudiants dans chaque semestre.
|
||||
Les dates indiquées sont les dates approximatives de <b>début</b> des semestres
|
||||
(les semestres commençant à des dates proches sont groupés). Le nombre de diplômés
|
||||
est celui à la <b>fin</b> du semestre correspondant.
|
||||
Lorsqu'il y a moins de {MAX_ETUD_IN_DESCR} étudiants dans une case, vous pouvez
|
||||
afficher leurs noms en passant le curseur sur le chiffre.
|
||||
</p>
|
||||
<p class="help">Les menus permettent de n'étudier que certaines catégories
|
||||
d'étudiants (titulaires d'un type de bac, garçons ou filles).
|
||||
La case "restreindre aux primo-entrants" permet de ne considérer que les étudiants
|
||||
qui n'ont jamais été inscrits dans ScoDoc avant le semestre considéré.
|
||||
</p>
|
||||
""",
|
||||
expl,
|
||||
html_sco_header.sco_footer(),
|
||||
]
|
||||
@ -870,35 +875,33 @@ def _gen_form_selectetuds(
|
||||
else:
|
||||
selected = 'selected="selected"'
|
||||
F = [
|
||||
"""<form id="f" method="get" action="%s">
|
||||
f"""<form id="f" method="get" action="{request.base_url}">
|
||||
<p>Bac: <select name="bac" onchange="javascript: submit(this);">
|
||||
<option value="" %s>tous</option>
|
||||
<option value="" {selected}>tous</option>
|
||||
"""
|
||||
% (request.base_url, selected)
|
||||
]
|
||||
for b in bacs:
|
||||
if bac == b:
|
||||
selected = 'selected="selected"'
|
||||
else:
|
||||
selected = ""
|
||||
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
|
||||
F.append(f'<option value="{b}" {selected}>{b}</option>')
|
||||
F.append("</select>")
|
||||
if bacspecialite:
|
||||
selected = ""
|
||||
else:
|
||||
selected = 'selected="selected"'
|
||||
F.append(
|
||||
""" Bac/Specialité: <select name="bacspecialite" onchange="javascript: submit(this);">
|
||||
<option value="" %s>tous</option>
|
||||
f""" Bac/Specialité: <select name="bacspecialite" onchange="javascript: submit(this);">
|
||||
<option value="" {selected}>tous</option>
|
||||
"""
|
||||
% selected
|
||||
)
|
||||
for b in bacspecialites:
|
||||
if bacspecialite == b:
|
||||
selected = 'selected="selected"'
|
||||
else:
|
||||
selected = ""
|
||||
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
|
||||
F.append(f'<option value="{b}" {selected}>{b}</option>')
|
||||
F.append("</select>")
|
||||
#
|
||||
F.append(
|
||||
@ -910,46 +913,44 @@ def _gen_form_selectetuds(
|
||||
)
|
||||
#
|
||||
F.append(
|
||||
""" Genre: <select name="civilite" onchange="javascript: submit(this);">
|
||||
<option value="" %s>tous</option>
|
||||
f""" Genre: <select name="civilite" onchange="javascript: submit(this);">
|
||||
<option value="" {selected}>tous</option>
|
||||
"""
|
||||
% selected
|
||||
)
|
||||
for b in civilites:
|
||||
if civilite == b:
|
||||
selected = 'selected="selected"'
|
||||
else:
|
||||
selected = ""
|
||||
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
|
||||
F.append(f'<option value="{b}" {selected}>{b}</option>')
|
||||
F.append("</select>")
|
||||
|
||||
F.append(
|
||||
""" Statut: <select name="statut" onchange="javascript: submit(this);">
|
||||
<option value="" %s>tous</option>
|
||||
f""" Statut: <select name="statut" onchange="javascript: submit(this);">
|
||||
<option value="" {selected}>tous</option>
|
||||
"""
|
||||
% selected
|
||||
)
|
||||
for b in statuts:
|
||||
if statut == b:
|
||||
selected = 'selected="selected"'
|
||||
else:
|
||||
selected = ""
|
||||
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
|
||||
F.append(f'<option value="{b}" {selected}>{b}</option>')
|
||||
F.append("</select>")
|
||||
|
||||
if only_primo:
|
||||
checked = 'checked="1"'
|
||||
else:
|
||||
checked = ""
|
||||
F.append(
|
||||
'<br><input type="checkbox" name="only_primo" onchange="javascript: submit(this);" %s/>Restreindre aux primo-entrants'
|
||||
% checked
|
||||
f"""<br>
|
||||
<input type="checkbox" name="only_primo"
|
||||
onchange="javascript: submit(this);"
|
||||
{'checked="1"' if only_primo else ""}/>Restreindre aux primo-entrants
|
||||
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}"/>
|
||||
<input type="hidden" name="percent" value="{percent}"/>
|
||||
|
||||
</p>
|
||||
</form>
|
||||
"""
|
||||
)
|
||||
F.append(
|
||||
'<input type="hidden" name="formsemestre_id" value="%s"/>' % formsemestre_id
|
||||
)
|
||||
F.append('<input type="hidden" name="percent" value="%s"/>' % percent)
|
||||
F.append("</p></form>")
|
||||
|
||||
return "\n".join(F)
|
||||
|
||||
|
||||
@ -964,7 +965,7 @@ def _gen_select_annee(field, values, value) -> str:
|
||||
return menu_html + "</select>"
|
||||
|
||||
|
||||
def _descr_etud_set(etudids):
|
||||
def _descr_etud_set(etudids) -> str:
|
||||
"textual html description of a set of etudids"
|
||||
etuds = []
|
||||
for etudid in etudids:
|
||||
@ -980,15 +981,22 @@ def _count_dem_reo(formsemestre_id, etudids):
|
||||
"count nb of demissions and reorientation in this etud set"
|
||||
formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
|
||||
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
|
||||
|
||||
validations_annuelles = nt.get_validations_annee() if nt.is_apc else {}
|
||||
dems = set()
|
||||
reos = set()
|
||||
for etudid in etudids:
|
||||
if nt.get_etud_etat(etudid) == "D":
|
||||
dems.add(etudid)
|
||||
dec = nt.get_etud_decision_sem(etudid)
|
||||
if dec and dec["code"] in codes_cursus.CODES_SEM_REO:
|
||||
reos.add(etudid)
|
||||
if nt.is_apc:
|
||||
# BUT: utilise les validations annuelles
|
||||
validation = validations_annuelles.get(etudid)
|
||||
if validation and validation.code in codes_cursus.CODES_SEM_REO:
|
||||
reos.add(etudid)
|
||||
else:
|
||||
# Autres formations: validations de semestres
|
||||
dec = nt.get_etud_decision_sem(etudid)
|
||||
if dec and dec["code"] in codes_cursus.CODES_SEM_REO:
|
||||
reos.add(etudid)
|
||||
return dems, reos
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.6.37"
|
||||
SCOVERSION = "9.6.38"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user