forked from ScoDoc/DocScoDoc
Statistiques: selection par annee de bac
This commit is contained in:
parent
0db128759f
commit
072f8b09de
0
misc/change_etudid.py
Executable file → Normal file
0
misc/change_etudid.py
Executable file → Normal file
100
sco_report.py
100
sco_report.py
@ -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(
|
||||
""" 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(
|
||||
""" Genre: <select name="sexe" onchange="javascript: submit(this);">
|
||||
<option value="" %s>tous</option>
|
||||
@ -902,7 +933,7 @@ def get_codeparcoursetud(context, etud, prefix="", separator=""):
|
||||
1234A pour un etudiant ayant effectué S1, S2, S3, S4 puis diplome
|
||||
12D pour un étudiant en S1, S2 puis démission en S2
|
||||
12R pour un etudiant en S1, S2 réorienté en fin de S2
|
||||
Construit aussi un dict: { semestre_id : decision_jury | None }
|
||||
Construit aussi un dict: { semestre_id : decision_jury | None }
|
||||
"""
|
||||
p = []
|
||||
decisions_jury = {}
|
||||
@ -949,11 +980,12 @@ def tsp_etud_list(
|
||||
only_primo=False,
|
||||
bac="", # selection sur type de bac
|
||||
bacspecialite="",
|
||||
annee_bac="",
|
||||
sexe="",
|
||||
statut="",
|
||||
):
|
||||
"""Liste des etuds a considerer dans table suivi parcours
|
||||
ramene aussi ensembles des bacs, genres, statuts de (tous) les etudiants
|
||||
"""Liste des etuds a considerer dans table suivi parcours
|
||||
ramene aussi ensembles des bacs, genres, statuts de (tous) les etudiants
|
||||
"""
|
||||
# log('tsp_etud_list(%s, bac="%s")' % (formsemestre_id,bac))
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
@ -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&%sbac=%s&bacspecialite=%s&sexe=%s&statut=%s&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,
|
||||
|
Loading…
Reference in New Issue
Block a user