Statistiques: selection par annee de bac

This commit is contained in:
viennet 2020-11-30 00:11:39 +01:00
parent 0db128759f
commit 072f8b09de
2 changed files with 69 additions and 31 deletions

0
misc/change_etudid.py Executable file → Normal file
View File

View File

@ -50,8 +50,7 @@ MAX_ETUD_IN_DESCR = 20
def formsemestre_etuds_stats(context, sem, only_primo=False):
"""Récupère liste d'etudiants avec etat et decision.
"""
"""Récupère liste d'etudiants avec etat et decision."""
nt = context._getNotesCache().get_NotesTable(
context, sem["formsemestre_id"]
) # > get_table_moyennes_triees, identdict, get_etud_decision_sem, get_etud_etat,
@ -361,12 +360,13 @@ def table_suivi_cohorte(
percent=False,
bac="", # selection sur type de bac
bacspecialite="",
annee_bac="",
sexe="",
statut="",
only_primo=False,
):
"""
Tableau indicant le nombre d'etudiants de la cohorte dans chaque état:
Tableau indiquant le nombre d'etudiants de la cohorte dans chaque état:
Etat date_debut_Sn date1 date2 ...
S_n #inscrits en Sn
S_n+1
@ -399,6 +399,7 @@ def table_suivi_cohorte(
orig_set = Set() # ensemble d'etudid du semestre d'origine
bacs = Set()
bacspecialites = Set()
annee_bacs = Set()
sexes = Set()
statuts = Set()
for etudid in etudids:
@ -408,6 +409,7 @@ def table_suivi_cohorte(
if (
(not bac or (bac == etud["bac"]))
and (not bacspecialite or (bacspecialite == bacspe))
and (not annee_bac or (annee_bac == str(etud["annee_bac"])))
and (not sexe or (sexe == etud["sexe"]))
and (not statut or (statut == etud["statut"]))
and (not only_primo or context.isPrimoEtud(etud, sem))
@ -419,6 +421,7 @@ def table_suivi_cohorte(
S[s["formsemestre_id"]] = s
bacs.add(etud["bac"])
bacspecialites.add(bacspe)
annee_bacs.add(etud["annee_bac"])
sexes.add(etud["sexe"])
if etud["statut"]: # ne montre pas les statuts non renseignés
statuts.add(etud["statut"])
@ -608,6 +611,8 @@ def table_suivi_cohorte(
dbac = ""
if bacspecialite:
dbac += " (spécialité %s)" % bacspecialite
if annee_bac:
dbac += " (année bac %s)" % annee_bac
if sexe:
dbac += " genre: %s" % sexe
if statut:
@ -643,7 +648,7 @@ def table_suivi_cohorte(
expl.append(", ".join(ls) + "</li>")
expl.append("</ul>")
logt("Z: table_suivi_cohorte done")
return tab, "\n".join(expl), bacs, bacspecialites, sexes, statuts
return tab, "\n".join(expl), bacs, bacspecialites, annee_bacs, sexes, statuts
def formsemestre_suivi_cohorte(
@ -653,21 +658,22 @@ def formsemestre_suivi_cohorte(
percent=1,
bac="",
bacspecialite="",
annee_bac="",
sexe="",
statut="",
only_primo=False,
REQUEST=None,
):
"""Affiche suivi cohortes par numero de semestre
"""
"""Affiche suivi cohortes par numero de semestre"""
percent = int(percent)
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
tab, expl, bacs, bacspecialites, sexes, statuts = table_suivi_cohorte(
tab, expl, bacs, bacspecialites, annee_bacs, sexes, statuts = table_suivi_cohorte(
context,
formsemestre_id,
percent=percent,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
only_primo=only_primo,
@ -714,10 +720,12 @@ def formsemestre_suivi_cohorte(
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
bacs=bacs,
bacspecialites=bacspecialites,
annee_bacs=annee_bacs,
sexes=sexes,
statuts=statuts,
percent=percent,
@ -737,10 +745,12 @@ def _gen_form_selectetuds(
only_primo=None,
bac=None,
bacspecialite=None,
annee_bac=None,
sexe=None,
statut=None,
bacs=None,
bacspecialites=None,
annee_bacs=None,
sexes=None,
statuts=None,
):
@ -749,6 +759,8 @@ def _gen_form_selectetuds(
bacs.sort()
bacspecialites = list(bacspecialites)
bacspecialites.sort()
annee_bacs = list(annee_bacs)
annee_bacs.sort()
sexes = list(sexes)
sexes.sort()
statuts = list(statuts)
@ -789,6 +801,25 @@ def _gen_form_selectetuds(
selected = ""
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
F.append("</select>")
#
if annee_bac:
selected = ""
else:
selected = 'selected="selected"'
F.append(
"""&nbsp; Année bac: <select name="annee_bac" onchange="javascript: submit(this);">
<option value="" %s>tous</option>
"""
% selected
)
for b in annee_bacs:
if str(annee_bac) == str(b):
selected = 'selected="selected"'
else:
selected = ""
F.append('<option value="%s" %s>%s</option>' % (b, selected, b))
F.append("</select>")
#
F.append(
"""&nbsp; Genre: <select name="sexe" onchange="javascript: submit(this);">
<option value="" %s>tous</option>
@ -949,6 +980,7 @@ def tsp_etud_list(
only_primo=False,
bac="", # selection sur type de bac
bacspecialite="",
annee_bac="",
sexe="",
statut="",
):
@ -964,6 +996,7 @@ def tsp_etud_list(
etuds = []
bacs = Set()
bacspecialites = Set()
annee_bacs = Set()
sexes = Set()
statuts = Set()
for etudid in etudids:
@ -973,6 +1006,7 @@ def tsp_etud_list(
if (
(not bac or (bac == etud["bac"]))
and (not bacspecialite or (bacspecialite == bacspe))
and (not annee_bac or (annee_bac == str(etud["annee_bac"])))
and (not sexe or (sexe == etud["sexe"]))
and (not statut or (statut == etud["statut"]))
and (not only_primo or context.isPrimoEtud(etud, sem))
@ -981,16 +1015,16 @@ def tsp_etud_list(
bacs.add(etud["bac"])
bacspecialites.add(bacspe)
annee_bacs.add(etud["annee_bac"])
sexes.add(etud["sexe"])
if etud["statut"]: # ne montre pas les statuts non renseignés
statuts.add(etud["statut"])
# log('tsp_etud_list: %s etuds' % len(etuds))
return etuds, bacs, bacspecialites, sexes, statuts
return etuds, bacs, bacspecialites, annee_bacs, sexes, statuts
def tsp_grouped_list(context, codes_etuds):
"""Liste pour table regroupant le nombre d'étudiants (+ bulle avec les noms) de chaque parcours
"""
"""Liste pour table regroupant le nombre d'étudiants (+ bulle avec les noms) de chaque parcours"""
L = []
parcours = codes_etuds.keys()
parcours.sort()
@ -1010,10 +1044,9 @@ def tsp_grouped_list(context, codes_etuds):
def table_suivi_parcours(
context, formsemestre_id, only_primo=False, grouped_parcours=True
):
"""Tableau recapitulant tous les parcours
"""
"""Tableau recapitulant tous les parcours"""
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
etuds, bacs, bacspecialites, sexes, statuts = tsp_etud_list(
etuds, bacs, bacspecialites, annee_bacs, sexes, statuts = tsp_etud_list(
context, formsemestre_id, only_primo=only_primo
)
codes_etuds = DictDefault(defaultvalue=[])
@ -1096,8 +1129,7 @@ def table_suivi_parcours(
def tsp_form_primo_group(REQUEST, only_primo, no_grouping, formsemestre_id, format):
"""Element de formulaire pour choisir si restriction aux primos entrants et groupement par lycees
"""
"""Element de formulaire pour choisir si restriction aux primos entrants et groupement par lycees"""
F = ["""<form name="f" method="get" action="%s">""" % REQUEST.URL0]
if only_primo:
checked = 'checked="1"'
@ -1131,8 +1163,7 @@ def formsemestre_suivi_parcours(
no_grouping=False,
REQUEST=None,
):
"""Effectifs dans les differents parcours possibles.
"""
"""Effectifs dans les differents parcours possibles."""
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
tab = table_suivi_parcours(
context,
@ -1175,26 +1206,27 @@ def graph_parcours(
only_primo=False,
bac="", # selection sur type de bac
bacspecialite="",
annee_bac="",
sexe="",
statut="",
):
"""
"""
""""""
if not WITH_PYDOT:
raise ScoValueError("pydot module is not installed")
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
etuds, bacs, bacspecialites, sexes, statuts = tsp_etud_list(
etuds, bacs, bacspecialites, annee_bacs, sexes, statuts = tsp_etud_list(
context,
formsemestre_id,
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
)
# log('graph_parcours: %s etuds (only_primo=%s)' % (len(etuds), only_primo))
if not etuds:
return "", bacs, bacspecialites, sexes, statuts
return "", etuds, bacs, bacspecialites, annee_bacs, sexes, statuts
edges = DictDefault(
defaultvalue=Set()
) # {(formsemestre_id_origin, formsemestre_id_dest) : etud_set}
@ -1380,7 +1412,7 @@ def graph_parcours(
# cf http://groups.google.com/group/pydot/browse_thread/thread/b3704c53e331e2ec
data = data.replace("font-family:Arial", "font-family:Helvetica")
return data, bacs, bacspecialites, sexes, statuts
return data, etuds, bacs, bacspecialites, annee_bacs, sexes, statuts
def formsemestre_graph_parcours(
@ -1390,23 +1422,24 @@ def formsemestre_graph_parcours(
only_primo=False,
bac="", # selection sur type de bac
bacspecialite="",
annee_bac="",
sexe="",
statut="",
allkeys=False,
allkeys=False, # unused
REQUEST=None,
):
"""Graphe suivi cohortes
"""
"""Graphe suivi cohortes"""
# log("formsemestre_graph_parcours")
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
if format == "pdf":
doc, bacs, bacspecialites, sexes, statuts = graph_parcours(
doc, etuds, bacs, bacspecialites, annee_bacs, sexes, statuts = graph_parcours(
context,
formsemestre_id,
format="pdf",
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
)
@ -1414,13 +1447,14 @@ def formsemestre_graph_parcours(
return sco_pdf.sendPDFFile(REQUEST, doc, filename + ".pdf")
elif format == "png":
#
doc, bacs, bacspecialites, sexes, statuts = graph_parcours(
doc, etuds, bacs, bacspecialites, annee_bacs, sexes, statuts = graph_parcours(
context,
formsemestre_id,
format="png",
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
)
@ -1439,12 +1473,13 @@ def formsemestre_graph_parcours(
"formsemestre_graph_parcours?formsemestre_id=%s&amp;%sbac=%s&amp;bacspecialite=%s&amp;sexe=%s&amp;statut=%s&amp;format="
% (formsemestre_id, op, bac, bacspecialite, sexe, statut)
)
doc, bacs, bacspecialites, sexes, statuts = graph_parcours(
doc, etuds, bacs, bacspecialites, annee_bacs, sexes, statuts = graph_parcours(
context,
formsemestre_id,
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
)
@ -1457,16 +1492,19 @@ def formsemestre_graph_parcours(
),
"""<h2 class="formsemestre">Parcours des étudiants de ce semestre</h2>""",
doc,
"<p>%d étudiants sélectionnés</p>" % len(etuds),
_gen_form_selectetuds(
formsemestre_id,
REQUEST=REQUEST,
only_primo=only_primo,
bac=bac,
bacspecialite=bacspecialite,
annee_bac=annee_bac,
sexe=sexe,
statut=statut,
bacs=bacs,
bacspecialites=bacspecialites,
annee_bacs=annee_bacs,
sexes=sexes,
statuts=statuts,
percent=0,