Adaptation a minima de la table 'poursuites' pour le BUT. Closes #849.
This commit is contained in:
parent
7d2d5a3ea9
commit
f09b2028e2
@ -38,20 +38,19 @@ from app.comp.res_compat import NotesTableCompat
|
|||||||
from app.models import FormSemestre
|
from app.models import FormSemestre
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
from app.scodoc import sco_assiduites
|
from app.scodoc import sco_assiduites
|
||||||
from app.scodoc import sco_cache
|
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
from app.scodoc import sco_groups
|
from app.scodoc import sco_groups
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
from app.scodoc import sco_etud
|
from app.scodoc import sco_etud
|
||||||
import sco_version
|
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
from app.scodoc.codes_cursus import code_semestre_validant, code_semestre_attente
|
from app.scodoc.codes_cursus import code_semestre_validant, code_semestre_attente
|
||||||
|
import sco_version
|
||||||
|
|
||||||
|
|
||||||
def etud_get_poursuite_info(sem, etud):
|
def etud_get_poursuite_info(sem: dict, etud: dict) -> dict:
|
||||||
"""{ 'nom' : ..., 'semlist' : [ { 'semestre_id': , 'moy' : ... }, {}, ...] }"""
|
"""{ 'nom' : ..., 'semlist' : [ { 'semestre_id': , 'moy' : ... }, {}, ...] }"""
|
||||||
I = {}
|
infos = {}
|
||||||
I.update(etud) # copie nom, prenom, civilite, ...
|
infos.update(etud) # copie nom, prenom, civilite, ...
|
||||||
|
|
||||||
# Now add each semester, starting from the first one
|
# Now add each semester, starting from the first one
|
||||||
semlist = []
|
semlist = []
|
||||||
@ -92,25 +91,28 @@ def etud_get_poursuite_info(sem, etud):
|
|||||||
for ue in ues: # on parcourt chaque UE
|
for ue in ues: # on parcourt chaque UE
|
||||||
for modimpl in modimpls: # dans chaque UE les modules
|
for modimpl in modimpls: # dans chaque UE les modules
|
||||||
if modimpl["module"]["ue_id"] == ue["ue_id"]:
|
if modimpl["module"]["ue_id"] == ue["ue_id"]:
|
||||||
codeModule = modimpl["module"]["code"] or ""
|
code_module = modimpl["module"]["code"] or ""
|
||||||
noteModule = scu.fmt_note(
|
note_module = scu.fmt_note(
|
||||||
nt.get_etud_mod_moy(modimpl["moduleimpl_id"], etudid)
|
nt.get_etud_mod_moy(modimpl["moduleimpl_id"], etudid)
|
||||||
)
|
)
|
||||||
if noteModule != "NI": # si étudiant inscrit au module
|
# si étudiant inscrit au module, sauf BUT
|
||||||
|
if (note_module != "NI") and not nt.is_apc:
|
||||||
if nt.mod_rangs is not None:
|
if nt.mod_rangs is not None:
|
||||||
rangModule = nt.mod_rangs[modimpl["moduleimpl_id"]][
|
rang_module = nt.mod_rangs[
|
||||||
0
|
modimpl["moduleimpl_id"]
|
||||||
][etudid]
|
][0][etudid]
|
||||||
else:
|
else:
|
||||||
rangModule = ""
|
rang_module = ""
|
||||||
modules.append([codeModule, noteModule])
|
modules.append([code_module, note_module])
|
||||||
rangs.append(["rang_" + codeModule, rangModule])
|
rangs.append(["rang_" + code_module, rang_module])
|
||||||
|
|
||||||
# Absences
|
# Absences
|
||||||
nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, nt.sem)
|
nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, nt.sem)
|
||||||
if (
|
# En BUT, prend tout, sinon ne prend que les semestre validés par le jury
|
||||||
|
if nt.is_apc or (
|
||||||
dec
|
dec
|
||||||
and not sem_descr # not sem_descr pour ne prendre que le semestre validé le plus récent
|
# not sem_descr pour ne prendre que le semestre validé le plus récent:
|
||||||
|
and not sem_descr
|
||||||
and (
|
and (
|
||||||
code_semestre_validant(dec["code"])
|
code_semestre_validant(dec["code"])
|
||||||
or code_semestre_attente(dec["code"])
|
or code_semestre_attente(dec["code"])
|
||||||
@ -128,9 +130,8 @@ def etud_get_poursuite_info(sem, etud):
|
|||||||
("AbsNonJust", nbabs - nbabsjust),
|
("AbsNonJust", nbabs - nbabsjust),
|
||||||
("AbsJust", nbabsjust),
|
("AbsJust", nbabsjust),
|
||||||
]
|
]
|
||||||
d += (
|
# ajout des 2 champs notes des modules et classement dans chaque module
|
||||||
moy_ues + rg_ues + modules + rangs
|
d += moy_ues + rg_ues + modules + rangs
|
||||||
) # ajout des 2 champs notes des modules et classement dans chaque module
|
|
||||||
sem_descr = collections.OrderedDict(d)
|
sem_descr = collections.OrderedDict(d)
|
||||||
if not sem_descr:
|
if not sem_descr:
|
||||||
sem_descr = collections.OrderedDict(
|
sem_descr = collections.OrderedDict(
|
||||||
@ -147,13 +148,14 @@ def etud_get_poursuite_info(sem, etud):
|
|||||||
sem_descr["semestre_id"] = sem_id
|
sem_descr["semestre_id"] = sem_id
|
||||||
semlist.append(sem_descr)
|
semlist.append(sem_descr)
|
||||||
|
|
||||||
I["semlist"] = semlist
|
infos["semlist"] = semlist
|
||||||
return I
|
return infos
|
||||||
|
|
||||||
|
|
||||||
def _flatten_info(info):
|
def _flatten_info(info):
|
||||||
# met la liste des infos semestres "a plat"
|
"""met la liste des infos semestres "a plat"
|
||||||
# S1_moy, S1_rang, ..., S2_moy, ...
|
S1_moy, S1_rang, ..., S2_moy, ...
|
||||||
|
"""
|
||||||
ids = []
|
ids = []
|
||||||
for s in info["semlist"]:
|
for s in info["semlist"]:
|
||||||
for k, v in s.items():
|
for k, v in s.items():
|
||||||
@ -164,7 +166,7 @@ def _flatten_info(info):
|
|||||||
return ids
|
return ids
|
||||||
|
|
||||||
|
|
||||||
def _getEtudInfoGroupes(group_ids, etat=None):
|
def _get_etud_info_groupes(group_ids, etat=None):
|
||||||
"""liste triée d'infos (dict) sur les etudiants du groupe indiqué.
|
"""liste triée d'infos (dict) sur les etudiants du groupe indiqué.
|
||||||
Attention: lent, car plusieurs requetes SQL par etudiant !
|
Attention: lent, car plusieurs requetes SQL par etudiant !
|
||||||
"""
|
"""
|
||||||
@ -181,7 +183,7 @@ def _getEtudInfoGroupes(group_ids, etat=None):
|
|||||||
def formsemestre_poursuite_report(formsemestre_id, fmt="html"):
|
def formsemestre_poursuite_report(formsemestre_id, fmt="html"):
|
||||||
"""Table avec informations "poursuite" """
|
"""Table avec informations "poursuite" """
|
||||||
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
||||||
etuds = _getEtudInfoGroupes([sco_groups.get_default_group(formsemestre_id)])
|
etuds = _get_etud_info_groupes([sco_groups.get_default_group(formsemestre_id)])
|
||||||
|
|
||||||
infos = []
|
infos = []
|
||||||
ids = []
|
ids = []
|
||||||
@ -191,7 +193,7 @@ def formsemestre_poursuite_report(formsemestre_id, fmt="html"):
|
|||||||
)
|
)
|
||||||
etud["_nom_target"] = fiche_url
|
etud["_nom_target"] = fiche_url
|
||||||
etud["_prenom_target"] = fiche_url
|
etud["_prenom_target"] = fiche_url
|
||||||
etud["_nom_td_attrs"] = 'id="%s" class="etudinfo"' % (etud["etudid"])
|
etud["_nom_td_attrs"] = f"""id="{etud['etudid']}" class="etudinfo" """
|
||||||
info = etud_get_poursuite_info(sem, etud)
|
info = etud_get_poursuite_info(sem, etud)
|
||||||
idd = _flatten_info(info)
|
idd = _flatten_info(info)
|
||||||
# On recupere la totalite des UEs dans ids
|
# On recupere la totalite des UEs dans ids
|
||||||
|
Loading…
Reference in New Issue
Block a user