diff --git a/app/scodoc/notesdb.py b/app/scodoc/notesdb.py index a3156a5a2f..7c1ff399d0 100644 --- a/app/scodoc/notesdb.py +++ b/app/scodoc/notesdb.py @@ -33,10 +33,11 @@ def unquote(s): return s.replace("&", "&") -def open_dept_connection(): - """Open a connection to the current dept db""" - # log("open_dept_connection to " + scu.get_db_cnx_string()) - return psycopg2.connect(scu.get_db_cnx_string()) +def open_dept_connection(scodoc_dept=None): + """Open a connection to the current dept db (g.scodoc_dept) + or to the argument scodoc_dept + """ + return psycopg2.connect(scu.get_db_cnx_string(scodoc_dept)) def close_dept_connection(): @@ -46,7 +47,16 @@ def close_dept_connection(): g.db_conn.close() -# Essai bien plus simple pour Flask: +def set_sco_dept(scodoc_dept): + """Set "context" to given dept + open db connection + """ + g.scodoc_dept = scodoc_dept + if hasattr(g, "db_conn"): + close_dept_connection() + g.db_conn = open_dept_connection() + + def GetDBConnexion(autocommit=True): # on n'utilise plus autocommit return g.db_conn diff --git a/app/scodoc/sco_find_etud.py b/app/scodoc/sco_find_etud.py index 539c861a18..69bde973be 100644 --- a/app/scodoc/sco_find_etud.py +++ b/app/scodoc/sco_find_etud.py @@ -28,6 +28,7 @@ """Recherche d'étudiants """ from flask import url_for, g +from flask_login import current_user from scodoc_manager import sco_mgr import app.scodoc.sco_utils as scu @@ -98,8 +99,8 @@ def form_search_etud( def search_etud_in_dept(context, expnom="", REQUEST=None): """Page recherche d'un etudiant. - Affiche la fiche de l'étudiant, ou, si la recherche donne plusieurs résultats, la liste des étudianst - correspondants. + Affiche la fiche de l'étudiant, ou, si la recherche donne plusieurs résultats, + la liste des étudiants correspondants. Appelée par boite de recherche barre latérale gauche. Args: @@ -109,9 +110,9 @@ def search_etud_in_dept(context, expnom="", REQUEST=None): etuds = sco_etud.get_etud_info(filled=1, etudid=expnom, REQUEST=REQUEST) if len(etuds) != 1: if scu.is_valid_code_nip(expnom): - etuds = search_etuds_infos(context, code_nip=expnom, REQUEST=REQUEST) + etuds = search_etuds_infos(code_nip=expnom) else: - etuds = search_etuds_infos(context, expnom=expnom, REQUEST=REQUEST) + etuds = search_etuds_infos(expnom=expnom) else: etuds = [] # si expnom est trop court, n'affiche rien @@ -188,7 +189,7 @@ def search_etud_in_dept(context, expnom="", REQUEST=None): # Was chercheEtudsInfo() -def search_etuds_infos(context, expnom=None, code_nip=None, REQUEST=None): +def search_etuds_infos(expnom=None, code_nip=None): """recherche les étudiants correspondants à expnom ou au code_nip et ramene liste de mappings utilisables en DTML. """ @@ -270,36 +271,31 @@ def form_search_etud_in_accessible_depts(context, REQUEST): """ -def search_etud_in_accessible_depts(context, expnom=None, code_nip=None, REQUEST=None): +def search_etud_in_accessible_depts(expnom=None, code_nip=None): """ - context est le ZScoDoc result is a list of (sorted) etuds, one list per dept. """ result = [] accessible_depts = [] depts = sco_mgr.get_dept_ids() for dept in depts: - # log('%s searching %s' % (str(REQUEST.AUTHENTICATED_USER),dept)) - if REQUEST.AUTHENTICATED_USER.has_permission(Permission.ScoView, dept=dept): + if current_user.has_permission(Permission.ScoView, dept=dept): if expnom or code_nip: - accessible_depts.append(dept.Scolarite.DeptId()) - etuds = search_etuds_infos( - dept.Scolarite, expnom=expnom, code_nip=code_nip, REQUEST=REQUEST - ) + accessible_depts.append(dept) + ndb.set_sco_dept(dept) + etuds = search_etuds_infos(expnom=expnom, code_nip=code_nip) else: etuds = [] result.append(etuds) return result, accessible_depts -def table_etud_in_accessible_depts(context, expnom=None, REQUEST=None): +def table_etud_in_accessible_depts(expnom=None): """ Page avec table étudiants trouvés, dans tous les departements. Attention: nous sommes ici au niveau de ScoDoc, pas dans un département """ - result, accessible_depts = search_etud_in_accessible_depts( - context, expnom=expnom, REQUEST=REQUEST - ) + result, accessible_depts = search_etud_in_accessible_depts(expnom=expnom) H = [ """
(recherche menée dans le%s département%s: %s)
""" - % (ss, ss, ", ".join(accessible_depts)) + f"""(recherche menée dans le{ss} département{ss}: + {", ".join(accessible_depts)}) +
+ +