remove all Model.query.get() [tests not OK] WIP

This commit is contained in:
Emmanuel Viennet 2024-08-06 23:18:17 +02:00 committed by Iziram
parent 6eb3921774
commit 055839757b
14 changed files with 42 additions and 35 deletions

View File

@ -195,7 +195,7 @@ def justificatifs_dept(dept_id: int = None, with_query: bool = False):
""" """
# Récupération du département et des étudiants du département # Récupération du département et des étudiants du département
dept: Departement = Departement.query.get(dept_id) dept: Departement = db.session.get(Departement, dept_id)
if dept is None: if dept is None:
return json_error(404, "Assiduité non existante") return json_error(404, "Assiduité non existante")
etuds: list[int] = [etud.id for etud in dept.etudiants] etuds: list[int] = [etud.id for etud in dept.etudiants]

View File

@ -44,7 +44,9 @@ def formation_change_referentiel(
ue.niveau_competence_id = niveaux_map[ue.niveau_competence_id] ue.niveau_competence_id = niveaux_map[ue.niveau_competence_id]
db.session.add(ue) db.session.add(ue)
if ue.parcours: if ue.parcours:
new_list = [ApcParcours.query.get(parcours_map[p.id]) for p in ue.parcours] new_list = [
db.session.get(ApcParcours, parcours_map[p.id]) for p in ue.parcours
]
ue.parcours.clear() ue.parcours.clear()
ue.parcours.extend(new_list) ue.parcours.extend(new_list)
db.session.add(ue) db.session.add(ue)
@ -52,7 +54,7 @@ def formation_change_referentiel(
for module in formation.modules: for module in formation.modules:
if module.parcours: if module.parcours:
new_list = [ new_list = [
ApcParcours.query.get(parcours_map[p.id]) for p in module.parcours db.session.get(ApcParcours, parcours_map[p.id]) for p in module.parcours
] ]
module.parcours.clear() module.parcours.clear()
module.parcours.extend(new_list) module.parcours.extend(new_list)
@ -76,7 +78,8 @@ def formation_change_referentiel(
# FormSemestre / parcours_formsemestre # FormSemestre / parcours_formsemestre
for formsemestre in formation.formsemestres: for formsemestre in formation.formsemestres:
new_list = [ new_list = [
ApcParcours.query.get(parcours_map[p.id]) for p in formsemestre.parcours db.session.get(ApcParcours, parcours_map[p.id])
for p in formsemestre.parcours
] ]
formsemestre.parcours.clear() formsemestre.parcours.clear()
formsemestre.parcours.extend(new_list) formsemestre.parcours.extend(new_list)

View File

@ -178,7 +178,7 @@ def notes_sem_assemble_cube(modimpls_notes: list[pd.DataFrame]) -> np.ndarray:
except ValueError: except ValueError:
app.critical_error( app.critical_error(
f"""notes_sem_assemble_cube: shapes { f"""notes_sem_assemble_cube: shapes {
", ".join([x.shape for x in modimpls_notes_arr])}""" ", ".join([str(x.shape) for x in modimpls_notes_arr])}"""
) )
return modimpls_notes.swapaxes(0, 1) return modimpls_notes.swapaxes(0, 1)

View File

@ -297,7 +297,7 @@ class Assiduite(ScoDocModel):
moduleimpl_id = int(moduleimpl_id) moduleimpl_id = int(moduleimpl_id)
except ValueError as exc: except ValueError as exc:
raise ScoValueError("Module non reconnu") from exc raise ScoValueError("Module non reconnu") from exc
moduleimpl: ModuleImpl = ModuleImpl.query.get(moduleimpl_id) moduleimpl: ModuleImpl = db.session.get(ModuleImpl, moduleimpl_id)
# ici moduleimpl est None si non spécifié # ici moduleimpl est None si non spécifié
@ -352,8 +352,8 @@ class Assiduite(ScoDocModel):
""" """
if self.moduleimpl_id is not None: if self.moduleimpl_id is not None:
modimpl: ModuleImpl = ModuleImpl.query.get(self.moduleimpl_id) modimpl: ModuleImpl = db.session.get(ModuleImpl, self.moduleimpl_id)
mod: Module = Module.query.get(modimpl.module_id) mod: Module = db.session.get(Module, modimpl.module_id)
if traduire: if traduire:
return f"{mod.code} {mod.titre}" return f"{mod.code} {mod.titre}"
return mod return mod

View File

@ -196,7 +196,7 @@ def check_if_has_decision_jury(
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
for etudid in etudids: for etudid in etudids:
if nt.etud_has_decision(etudid): if nt.etud_has_decision(etudid):
etud = Identite.query.get(etudid) etud = db.session.get(Identite, etudid)
raise ScoValueError( raise ScoValueError(
f"""désinscription impossible: l'étudiant {etud.nomprenom} a f"""désinscription impossible: l'étudiant {etud.nomprenom} a
une décision de jury (la supprimer avant si nécessaire)""" une décision de jury (la supprimer avant si nécessaire)"""

View File

@ -376,7 +376,7 @@ def formsemestre_inscr_passage(
if a_desinscrire: if a_desinscrire:
H.append("<h3>Étudiants à désinscrire</h3><ol>") H.append("<h3>Étudiants à désinscrire</h3><ol>")
a_desinscrire_ident = sorted( a_desinscrire_ident = sorted(
(Identite.query.get(eid) for eid in a_desinscrire), (db.session.get(Identite, eid) for eid in a_desinscrire),
key=lambda x: x.sort_key, key=lambda x: x.sort_key,
) )
for etud in a_desinscrire_ident: for etud in a_desinscrire_ident:

View File

@ -292,7 +292,7 @@ def _descr_decisions_ues(nt, etudid, decisions_ue, decision_sem) -> list[dict]:
) )
) )
): ):
ue = UniteEns.query.get(ue_id) ue = db.session.get(UniteEns, ue_id)
assert ue assert ue
# note modernisation code: on utilise des dict tant que get_etud_ue_status renvoie des dicts # note modernisation code: on utilise des dict tant que get_etud_ue_status renvoie des dicts
uelist.append(ue.to_dict()) uelist.append(ue.to_dict())

View File

@ -408,7 +408,7 @@ def _check_inscription(
elif etudid not in etudids_inscrits_mod: elif etudid not in etudids_inscrits_mod:
msg_err = "non inscrit au module" msg_err = "non inscrit au module"
if msg_err: if msg_err:
etud = Identite.query.get(etudid) if isinstance(etudid, int) else None etud = db.session.get(Identite, etudid) if isinstance(etudid, int) else None
msg = f"étudiant {etud.nomprenom if etud else etudid} {msg_err}" msg = f"étudiant {etud.nomprenom if etud else etudid} {msg_err}"
log(f"notes_add: {etudid} {msg}: aborting") log(f"notes_add: {etudid} {msg}: aborting")
raise NoteProcessError(msg) raise NoteProcessError(msg)
@ -454,7 +454,7 @@ def notes_add(
if (value is not None) and not isinstance(value, float): if (value is not None) and not isinstance(value, float):
log(f"notes_add: {etudid} valeur de note invalide ({value}): aborting") log(f"notes_add: {etudid} valeur de note invalide ({value}): aborting")
etud = Identite.query.get(etudid) if isinstance(etudid, int) else None etud = db.session.get(Identite, etudid) if isinstance(etudid, int) else None
raise NoteProcessError( raise NoteProcessError(
f"etudiant {etud.nomprenom if etud else etudid}: valeur de note invalide ({value})" f"etudiant {etud.nomprenom if etud else etudid}: valeur de note invalide ({value})"
) )
@ -491,7 +491,9 @@ def notes_add(
# si change sur DEM/DEF ajoute message warning aux messages # si change sur DEM/DEF ajoute message warning aux messages
if etudid not in etudids_actifs: # DEM ou DEF if etudid not in etudids_actifs: # DEM ou DEF
etud = ( etud = (
Identite.query.get(etudid) if isinstance(etudid, int) else None db.session.get(Identite, etudid)
if isinstance(etudid, int)
else None
) )
messages.append( messages.append(
f"""étudiant {etud.nomprenom if etud else etudid f"""étudiant {etud.nomprenom if etud else etudid
@ -801,7 +803,7 @@ def get_sorted_etuds_notes(
notes_db[etudid]["value"], fixed_precision_str=False notes_db[etudid]["value"], fixed_precision_str=False
) )
user = ( user = (
User.query.get(notes_db[etudid]["uid"]) db.session.get(User, notes_db[etudid]["uid"])
if notes_db[etudid]["uid"] if notes_db[etudid]["uid"]
else None else None
) )

View File

@ -144,7 +144,7 @@ def external_ue_create(
), ),
}, },
) )
modimpl = ModuleImpl.query.get(moduleimpl_id) modimpl = db.session.get(ModuleImpl, moduleimpl_id)
assert modimpl assert modimpl
return modimpl return modimpl
@ -206,7 +206,7 @@ def get_external_moduleimpl(formsemestre_id: int, ue_id: int) -> ModuleImpl:
) )
if r: if r:
modimpl_id = r[0]["moduleimpl_id"] modimpl_id = r[0]["moduleimpl_id"]
modimpl = ModuleImpl.query.get(modimpl_id) modimpl = db.session.get(ModuleImpl, modimpl_id)
assert modimpl assert modimpl
return modimpl return modimpl
else: else:

View File

@ -553,7 +553,7 @@ class RowAssiJusti(tb.Row):
) )
if self.table.options.show_module: if self.table.options.show_module:
if self.ligne["type"] == "assiduite": if self.ligne["type"] == "assiduite":
assi: Assiduite = Assiduite.query.get(self.ligne["obj_id"]) assi: Assiduite = db.session.get(Assiduite, self.ligne["obj_id"])
# Gestion des colonnes concernant le module # Gestion des colonnes concernant le module
mod: Module = assi.get_module(False) mod: Module = assi.get_module(False)
code = mod.code if isinstance(mod, Module) else "" code = mod.code if isinstance(mod, Module) else ""
@ -607,7 +607,9 @@ class RowAssiJusti(tb.Row):
def _utilisateur(self) -> None: def _utilisateur(self) -> None:
utilisateur: User = ( utilisateur: User = (
User.query.get(self.ligne["user_id"]) if self.ligne["user_id"] else None db.session.get(User, self.ligne["user_id"])
if self.ligne["user_id"] is not None
else None
) )
self.add_cell( self.add_cell(

View File

@ -24,6 +24,9 @@
# #
############################################################################## ##############################################################################
"""Vues assiduité
"""
import datetime import datetime
import json import json
import re import re
@ -508,7 +511,7 @@ def _record_assiduite_etud(
case None: case None:
moduleimpl = None moduleimpl = None
case _: case _:
moduleimpl = ModuleImpl.query.get(moduleimpl_id) moduleimpl = db.session.get(ModuleImpl, moduleimpl_id)
try: try:
assi_etat: scu.EtatAssiduite = scu.EtatAssiduite.get(form.assi_etat.data) assi_etat: scu.EtatAssiduite = scu.EtatAssiduite.get(form.assi_etat.data)
@ -1678,7 +1681,7 @@ def _preparer_objet(
if not sans_gros_objet: if not sans_gros_objet:
justificatifs: list[int] = get_assiduites_justif(objet.assiduite_id, False) justificatifs: list[int] = get_assiduites_justif(objet.assiduite_id, False)
for justi_id in justificatifs: for justi_id in justificatifs:
justi: Justificatif = Justificatif.query.get(justi_id) justi: Justificatif = db.session.get(Justificatif, justi_id)
objet_prepare["justification"]["justificatifs"].append( objet_prepare["justification"]["justificatifs"].append(
_preparer_objet("justificatif", justi, sans_gros_objet=True) _preparer_objet("justificatif", justi, sans_gros_objet=True)
) )
@ -1717,7 +1720,7 @@ def _preparer_objet(
objet_prepare["etud_nom"] = objet.etudiant.nomprenom objet_prepare["etud_nom"] = objet.etudiant.nomprenom
if objet.user_id is not None: if objet.user_id is not None:
user: User = User.query.get(objet.user_id) user: User = db.session.get(User, objet.user_id)
objet_prepare["saisie_par"] = user.get_nomprenom() objet_prepare["saisie_par"] = user.get_nomprenom()
else: else:
objet_prepare["saisie_par"] = "Inconnu" objet_prepare["saisie_par"] = "Inconnu"
@ -2925,7 +2928,7 @@ def _module_selector_multiple(
) )
choices = OrderedDict() choices = OrderedDict()
for formsemestre_id in modimpls_by_formsemestre: for formsemestre_id in modimpls_by_formsemestre:
formsemestre: FormSemestre = FormSemestre.query.get(formsemestre_id) formsemestre: FormSemestre = db.session.get(FormSemestre, formsemestre_id)
if only_form is not None and formsemestre != only_form: if only_form is not None and formsemestre != only_form:
continue continue
# indique le nom du semestre dans le menu (optgroup) # indique le nom du semestre dans le menu (optgroup)

View File

@ -2112,7 +2112,7 @@ def check_group_apogee(group_id, etat=None, fix=False, fixmail=False):
def export_etudiants_courants(): def export_etudiants_courants():
"""Table export de tous les étudiants des formsemestres en cours.""" """Table export de tous les étudiants des formsemestres en cours."""
fmt = request.args.get("fmt", "html") fmt = request.args.get("fmt", "html")
departement = Departement.query.get(g.scodoc_dept_id) departement = db.session.get(Departement, g.scodoc_dept_id)
if not departement: if not departement:
raise ScoValueError("département invalide") raise ScoValueError("département invalide")
formsemestres = FormSemestre.get_dept_formsemestres_courants(departement).all() formsemestres = FormSemestre.get_dept_formsemestres_courants(departement).all()
@ -2462,7 +2462,7 @@ def formsemestre_import_etud_admission(
Si tous_courants, le fait pour tous les formsemestres courants du département Si tous_courants, le fait pour tous les formsemestres courants du département
""" """
if tous_courants: if tous_courants:
departement = Departement.query.get(g.scodoc_dept_id) departement = db.session.get(Departement, g.scodoc_dept_id)
formsemestres = FormSemestre.get_dept_formsemestres_courants(departement) formsemestres = FormSemestre.get_dept_formsemestres_courants(departement)
else: else:
formsemestres = [FormSemestre.get_formsemestre(formsemestre_id)] formsemestres = [FormSemestre.get_formsemestre(formsemestre_id)]
@ -2557,13 +2557,9 @@ def sco_dump_and_send_db(message="", request_url="", traceback_str_base64=""):
try: try:
r_msg = r.json()["message"] r_msg = r.json()["message"]
except (requests.exceptions.JSONDecodeError, KeyError): except (requests.exceptions.JSONDecodeError, KeyError):
r_msg = "Erreur: code <tt>" r_msg = f"""Erreur: code <tt>{status_code}</tt>
+status_code Merci de contacter <a href="mailto:{scu.SCO_DEV_MAIL}">{scu.SCO_DEV_MAIL}</a>
+'</tt> Merci de contacter <a href="mailto:' """
+scu.SCO_DEV_MAIL
+'">'
+scu.SCO_DEV_MAIL
+"</a>"
H = [html_sco_header.sco_header(page_title="Assistance technique")] H = [html_sco_header.sco_header(page_title="Assistance technique")]
if status_code == requests.codes.OK: # pylint: disable=no-member if status_code == requests.codes.OK: # pylint: disable=no-member

View File

@ -4,10 +4,10 @@ Tableau de bord utilisateur
Emmanuel Viennet, 2023 Emmanuel Viennet, 2023
""" """
from flask import flash, redirect, render_template, url_for from flask import flash, redirect, render_template, url_for
from flask import g, request from flask import g, request
from flask_login import login_required from flask_login import login_required
from app import db
from app.auth.models import User from app.auth.models import User
from app.decorators import ( from app.decorators import (
scodoc, scodoc,
@ -31,7 +31,8 @@ def user_board(user_name: str):
modimpls_by_formsemestre, modimpls_by_formsemestre,
) = FormSemestre.get_user_formsemestres_annee_by_dept(user) ) = FormSemestre.get_user_formsemestres_annee_by_dept(user)
depts = { depts = {
dept_id: Departement.query.get(dept_id) for dept_id in formsemestres_by_dept dept_id: db.session.get(Departement, dept_id)
for dept_id in formsemestres_by_dept
} }
dept_names = { dept_names = {
dept_id: sco_preferences.get_preference("DeptName", dept_id=dept_id) dept_id: sco_preferences.get_preference("DeptName", dept_id=dept_id)

View File

@ -250,7 +250,7 @@ def run_sco_basic(verbose=False, dept=None) -> FormSemestre:
def _signal_absences_justificatifs(etudid: int): def _signal_absences_justificatifs(etudid: int):
etud: Identite = Identite.query.get(etudid) etud: Identite = db.session.get(Identite, etudid)
db.session.commit() db.session.commit()
for i in range(15, 18): for i in range(15, 18):
db.session.add( db.session.add(