forked from ScoDoc/DocScoDoc
WIP migration / cnx
This commit is contained in:
parent
3af2c460b7
commit
f4611af10e
@ -606,7 +606,7 @@ def scolars_import_admission(
|
||||
if not data:
|
||||
raise ScoException("scolars_import_admission: empty file !")
|
||||
diag += diag2
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
titles = data[0]
|
||||
# idx -> ('field', convertor)
|
||||
|
@ -168,7 +168,7 @@ class NotesTable:
|
||||
raise ScoValueError("invalid formsemestre_id (%s)" % formsemestre_id)
|
||||
self.context = context
|
||||
self.formsemestre_id = formsemestre_id
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
self.sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
self.moduleimpl_stats = {} # { moduleimpl_id : {stats} }
|
||||
self._uecoef = {} # { ue_id : coef } cache coef manuels ue cap
|
||||
@ -1034,7 +1034,7 @@ class NotesTable:
|
||||
Si la decision n'a pas été prise, la clé etudid n'est pas présente.
|
||||
Si l'étudiant est défaillant, met un code DEF sur toutes les UE
|
||||
"""
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select etudid, code, assidu, compense_formsemestre_id, event_date from scolar_formsemestre_validation where formsemestre_id=%(formsemestre_id)s and ue_id is NULL;",
|
||||
@ -1295,7 +1295,7 @@ class NotesTable:
|
||||
"""Vrai si cet etudiant a au moins une note en attente dans ce semestre.
|
||||
(ne compte que les notes en attente dans des évaluation avec coef. non nul).
|
||||
"""
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select n.* from notes_notes n, notes_evaluation e, notes_moduleimpl m, notes_moduleimpl_inscription i where n.etudid = %(etudid)s and n.value = %(code_attente)s and n.evaluation_id=e.evaluation_id and e.moduleimpl_id=m.moduleimpl_id and m.formsemestre_id=%(formsemestre_id)s and e.coefficient != 0 and m.moduleimpl_id=i.moduleimpl_id and i.etudid=%(etudid)s",
|
||||
|
@ -39,12 +39,13 @@ def unquote(s):
|
||||
_pools = {}
|
||||
|
||||
|
||||
def GetDBConnexion(context, autocommit=True):
|
||||
pool = _pools.get(context._db_cnx_string, None)
|
||||
def GetDBConnexion(autocommit=True):
|
||||
"""connexion to the DB of a departement"""
|
||||
pool = _pools.get(scu.get_db_cnx_string(), None)
|
||||
if not pool:
|
||||
pool = psycopg2.pool.ThreadedConnectionPool(2, 8, dsn=context._db_cnx_string)
|
||||
_pools[context._db_cnx_string] = pool
|
||||
# log('GetDBConnexion: created pool for "%s"' % context._db_cnx_string)
|
||||
pool = psycopg2.pool.ThreadedConnectionPool(2, 8, dsn=scu.get_db_cnx_string())
|
||||
_pools[scu.get_db_cnx_string()] = pool
|
||||
# log('GetDBConnexion: created pool for "%s"' % scu.get_db_cnx_string())
|
||||
cnx = pool.getconn(key=(thread.get_ident(), autocommit))
|
||||
# log('GetDBConnexion: autocommit=%s cnx=%s' % (autocommit,cnx))
|
||||
if cnx.autocommit != autocommit:
|
||||
@ -57,11 +58,11 @@ _users_pools = {}
|
||||
|
||||
|
||||
def GetUsersDBConnexion(context, autocommit=True):
|
||||
pool = _users_pools.get(context._db_cnx_string, None)
|
||||
pool = _users_pools.get(scu.get_db_cnx_string(), None)
|
||||
if not pool:
|
||||
pool = psycopg2.pool.ThreadedConnectionPool(2, 8, dsn=context._db_cnx_string)
|
||||
_users_pools[context._db_cnx_string] = pool
|
||||
log('GetUsersDBConnexion: created pool for "%s"' % context._db_cnx_string)
|
||||
pool = psycopg2.pool.ThreadedConnectionPool(2, 8, dsn=scu.get_db_cnx_string())
|
||||
_users_pools[scu.get_db_cnx_string()] = pool
|
||||
log('GetUsersDBConnexion: created pool for "%s"' % scu.get_db_cnx_string())
|
||||
cnx = pool.getconn(key=(thread.get_ident(), autocommit))
|
||||
if cnx.autocommit != autocommit:
|
||||
cnx.autocommit = autocommit
|
||||
@ -87,7 +88,7 @@ class ScoDocCursor(psycopg2.extensions.cursor):
|
||||
|
||||
def SimpleQuery(context, query, args, cursor=None):
|
||||
if not cursor:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
# log( 'SimpleQuery(%s)' % (query % args) )
|
||||
cursor.execute(query, args)
|
||||
|
@ -37,6 +37,7 @@ import scolars
|
||||
import pe_jurype, pe_tagtable, pe_tools
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from notes_log import log
|
||||
import scolars
|
||||
|
||||
@ -240,7 +241,7 @@ def get_annotation_PE(context, etudid, tag_annotation_pe):
|
||||
Result: chaine unicode
|
||||
"""
|
||||
if tag_annotation_pe:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
annotations = scolars.etud_annotations_list(
|
||||
cnx, args={"etudid": etudid}
|
||||
) # Les annotations de l'étudiant
|
||||
|
@ -110,7 +110,7 @@ def abs_notify_send(
|
||||
context, destinations, etudid, msg, nbabs, nbabsjust, formsemestre_id
|
||||
):
|
||||
"""Actually send the notification by email, and register it in database"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
log("abs_notify: sending notification to %s" % destinations)
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
for email in destinations:
|
||||
@ -203,7 +203,7 @@ def abs_notify_is_above_threshold(context, etudid, nbabs, nbabsjust, formsemestr
|
||||
def etud_nbabs_last_notified(context, etudid, formsemestre_id=None):
|
||||
"""nbabs lors de la dernière notification envoyée pour cet étudiant dans ce semestre
|
||||
ou sans semestre (ce dernier cas est nécessaire pour la transition au nouveau code)"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""select * from absences_notifications where etudid = %(etudid)s and (formsemestre_id = %(formsemestre_id)s or formsemestre_id is NULL) order by notification_date desc""",
|
||||
@ -218,7 +218,7 @@ def etud_nbabs_last_notified(context, etudid, formsemestre_id=None):
|
||||
|
||||
def user_nbdays_since_last_notif(context, email_addr, etudid):
|
||||
"""nb days since last notification to this email, or None if no previous notification"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""select * from absences_notifications where email = %(email_addr)s and etudid=%(etudid)s order by notification_date desc""",
|
||||
|
@ -198,7 +198,7 @@ def formsemestre_bulletinetud_dict(
|
||||
I["filigranne"] = prefs["bul_temporary_txt"]
|
||||
|
||||
# --- Appreciations
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
apprecs = scolars.appreciations_list(
|
||||
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
||||
)
|
||||
@ -655,7 +655,7 @@ def etud_descr_situation_semestre(
|
||||
descr_decisions_ue : ' UE acquises: UE1, UE2', ou vide si pas de dec. ou si pas show_uevalid
|
||||
descr_mention : 'Mention Bien', ou vide si pas de mention ou si pas show_mention
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
infos = scu.DictDefault(defaultvalue="")
|
||||
|
||||
# --- Situation et décisions jury
|
||||
|
@ -400,7 +400,7 @@ def formsemestre_bulletinetud_published_dict(
|
||||
d["decision"] = dict(code="", etat="DEM")
|
||||
|
||||
# --- Appreciations
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
apprecs = scolars.appreciations_list(
|
||||
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
||||
)
|
||||
|
@ -412,7 +412,7 @@ def make_xml_formsemestre_bulletinetud(
|
||||
doc.decision(code="", etat="DEM")
|
||||
doc._pop()
|
||||
# --- Appreciations
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
apprecs = scolars.appreciations_list(
|
||||
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
||||
)
|
||||
|
@ -68,7 +68,7 @@ def formsemestre_expressions_use_abscounts(context, formsemestre_id):
|
||||
"""
|
||||
# check presence of 'nbabs' in expressions
|
||||
ab = "nb_abs" # chaine recherchée
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# 1- moyennes d'UE:
|
||||
elist = formsemestre_ue_computation_expr_list(
|
||||
cnx, {"formsemestre_id": formsemestre_id}
|
||||
|
@ -32,7 +32,7 @@ from types import StringType
|
||||
import safehtml
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb
|
||||
import ndb as ndb
|
||||
from notes_log import log
|
||||
import VERSION
|
||||
from sco_exceptions import AccessDenied
|
||||
@ -78,7 +78,7 @@ def get_etudids_with_debouche(context, start_year):
|
||||
start_date = str(start_year) + "-01-01"
|
||||
# Recupere tous les etudid avec un debouché renseigné et une inscription dans un semestre
|
||||
# posterieur à la date de depart:
|
||||
# r = notesdb.SimpleDictFetch(context,
|
||||
# r = ndb.SimpleDictFetch(context,
|
||||
# """SELECT DISTINCT i.etudid
|
||||
# FROM notes_formsemestre_inscription i, admissions adm, notes_formsemestre s
|
||||
# WHERE adm.debouche is not NULL
|
||||
@ -87,7 +87,7 @@ def get_etudids_with_debouche(context, start_year):
|
||||
# """,
|
||||
# {'start_date' : start_date })
|
||||
|
||||
r = notesdb.SimpleDictFetch(
|
||||
r = ndb.SimpleDictFetch(
|
||||
context,
|
||||
"""SELECT DISTINCT i.etudid
|
||||
FROM notes_formsemestre_inscription i, notes_formsemestre s, itemsuivi it
|
||||
@ -215,7 +215,7 @@ def report_debouche_ask_date(context, REQUEST=None):
|
||||
# raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
# adm_id = object
|
||||
# debouche = value.strip('-_ \t')
|
||||
# cnx = context.GetDBConnexion()
|
||||
# cnx = ndb.GetDBConnexion()
|
||||
# adms = scolars.admission_list(cnx, {'etudid' : etudid})
|
||||
# if not adms:
|
||||
# raise ValueError('no admission info for %s !' % etudid)
|
||||
@ -224,7 +224,7 @@ def report_debouche_ask_date(context, REQUEST=None):
|
||||
# admission_edit(cnx, adm)
|
||||
|
||||
|
||||
_itemsuiviEditor = notesdb.EditableTable(
|
||||
_itemsuiviEditor = ndb.EditableTable(
|
||||
"itemsuivi",
|
||||
"itemsuivi_id",
|
||||
("itemsuivi_id", "etudid", "item_date", "situation"),
|
||||
@ -232,9 +232,9 @@ _itemsuiviEditor = notesdb.EditableTable(
|
||||
convert_null_outputs_to_empty=True,
|
||||
output_formators={
|
||||
"situation": safehtml.HTML2SafeHTML,
|
||||
"item_date": notesdb.DateISOtoDMY,
|
||||
"item_date": ndb.DateISOtoDMY,
|
||||
},
|
||||
input_formators={"item_date": notesdb.DateDMYtoISO},
|
||||
input_formators={"item_date": ndb.DateDMYtoISO},
|
||||
)
|
||||
|
||||
_itemsuivi_create = _itemsuiviEditor.create
|
||||
@ -265,7 +265,7 @@ def itemsuivi_suppress(context, itemsuivi_id, REQUEST=None):
|
||||
"""Suppression d'un item"""
|
||||
if not sco_permissions.can_edit_suivi(context, REQUEST):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
item = itemsuivi_get(cnx, itemsuivi_id, ignore_errors=True)
|
||||
if item:
|
||||
_itemsuivi_delete(cnx, itemsuivi_id)
|
||||
@ -279,7 +279,7 @@ def itemsuivi_create(
|
||||
"""Creation d'un item"""
|
||||
if not sco_permissions.can_edit_suivi(context, REQUEST):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
itemsuivi_id = _itemsuivi_create(
|
||||
cnx, args={"etudid": etudid, "item_date": item_date, "situation": situation}
|
||||
)
|
||||
@ -298,7 +298,7 @@ def itemsuivi_set_date(context, itemsuivi_id, item_date, REQUEST=None):
|
||||
if not sco_permissions.can_edit_suivi(context, REQUEST):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
# log('itemsuivi_set_date %s : %s' % (itemsuivi_id, item_date))
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
item = itemsuivi_get(cnx, itemsuivi_id)
|
||||
item["item_date"] = item_date
|
||||
_itemsuivi_edit(cnx, item)
|
||||
@ -311,7 +311,7 @@ def itemsuivi_set_situation(context, object, value, REQUEST=None):
|
||||
itemsuivi_id = object
|
||||
situation = value.strip("-_ \t")
|
||||
# log('itemsuivi_set_situation %s : %s' % (itemsuivi_id, situation))
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
item = itemsuivi_get(cnx, itemsuivi_id)
|
||||
item["situation"] = situation
|
||||
_itemsuivi_edit(cnx, item)
|
||||
@ -320,7 +320,7 @@ def itemsuivi_set_situation(context, object, value, REQUEST=None):
|
||||
|
||||
def itemsuivi_list_etud(context, etudid, format=None, REQUEST=None):
|
||||
"""Liste des items pour cet étudiant, avec tags"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
items = _itemsuivi_list(cnx, {"etudid": etudid})
|
||||
for it in items:
|
||||
it["tags"] = ", ".join(itemsuivi_tag_list(context, it["itemsuivi_id"]))
|
||||
@ -331,7 +331,7 @@ def itemsuivi_list_etud(context, etudid, format=None, REQUEST=None):
|
||||
|
||||
def itemsuivi_tag_list(context, itemsuivi_id):
|
||||
"""les noms de tags associés à cet item"""
|
||||
r = notesdb.SimpleDictFetch(
|
||||
r = ndb.SimpleDictFetch(
|
||||
context,
|
||||
"""SELECT t.title
|
||||
FROM itemsuivi_tags_assoc a, itemsuivi_tags t
|
||||
@ -349,7 +349,7 @@ def itemsuivi_tag_search(context, term, REQUEST=None):
|
||||
if not scu.ALPHANUM_EXP.match(term.decode(scu.SCO_ENCODING)):
|
||||
data = []
|
||||
else:
|
||||
r = notesdb.SimpleDictFetch(
|
||||
r = ndb.SimpleDictFetch(
|
||||
context,
|
||||
"SELECT title FROM itemsuivi_tags WHERE title LIKE %(term)s",
|
||||
{"term": term + "%"},
|
||||
@ -373,7 +373,7 @@ def itemsuivi_tag_set(context, itemsuivi_id="", taglist=[], REQUEST=None):
|
||||
taglist = [t.strip() for t in taglist]
|
||||
# log('itemsuivi_tag_set: itemsuivi_id=%s taglist=%s' % (itemsuivi_id, taglist))
|
||||
# Sanity check:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_ = itemsuivi_get(cnx, itemsuivi_id)
|
||||
|
||||
newtags = set(taglist)
|
||||
|
@ -232,7 +232,7 @@ def formation_edit(context, formation_id=None, create=False, REQUEST=None):
|
||||
|
||||
def do_formation_create(context, args, REQUEST):
|
||||
"create a formation"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check unique acronyme/titre/version
|
||||
a = args.copy()
|
||||
if a.has_key("formation_id"):
|
||||
@ -270,7 +270,7 @@ def do_formation_edit(context, args):
|
||||
if args.has_key("formation_code") and not args["formation_code"]:
|
||||
del args["formation_code"]
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sco_formations._formationEditor.edit(cnx, args)
|
||||
|
||||
# Invalide les semestres utilisant cette formation:
|
||||
|
@ -752,7 +752,7 @@ def do_ue_edit(context, args, bypass_lock=False, dont_invalidate_cache=False):
|
||||
if args.has_key("ue_code") and not args["ue_code"]:
|
||||
del args["ue_code"]
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._ueEditor.edit(cnx, args)
|
||||
|
||||
if not dont_invalidate_cache:
|
||||
|
@ -31,6 +31,7 @@
|
||||
import datetime
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from notesdb import ScoDocCursor, EditableTable, DateISOtoDMY, DateDMYtoISO
|
||||
|
||||
|
||||
@ -199,58 +200,58 @@ _entreprise_contactEditor = EditableTable(
|
||||
|
||||
def do_entreprise_create(context, args):
|
||||
"entreprise_create"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _entreprisesEditor.create(cnx, args)
|
||||
return r
|
||||
|
||||
|
||||
def do_entreprise_delete(context, oid):
|
||||
"entreprise_delete"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprisesEditor.delete(cnx, oid)
|
||||
|
||||
|
||||
def do_entreprise_list(context, **kw):
|
||||
"entreprise_list"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
kw["context"] = context
|
||||
return _entreprisesEditor.list(cnx, **kw)
|
||||
|
||||
|
||||
def do_entreprise_list_by_etud(context, **kw):
|
||||
"entreprise_list_by_etud"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return _entreprisesEditor.list_by_etud(cnx, **kw)
|
||||
|
||||
|
||||
def do_entreprise_edit(context, *args, **kw):
|
||||
"entreprise_edit"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprisesEditor.edit(cnx, *args, **kw)
|
||||
|
||||
|
||||
def do_entreprise_correspondant_create(context, args):
|
||||
"entreprise_correspondant_create"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _entreprise_correspEditor.create(cnx, args)
|
||||
return r
|
||||
|
||||
|
||||
def do_entreprise_correspondant_delete(context, oid):
|
||||
"entreprise_correspondant_delete"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprise_correspEditor.delete(cnx, oid)
|
||||
|
||||
|
||||
def do_entreprise_correspondant_list(context, **kw):
|
||||
"entreprise_correspondant_list"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return _entreprise_correspEditor.list(cnx, **kw)
|
||||
|
||||
|
||||
def do_entreprise_correspondant_edit(context, *args, **kw):
|
||||
"entreprise_correspondant_edit"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprise_correspEditor.edit(cnx, *args, **kw)
|
||||
|
||||
|
||||
@ -262,25 +263,25 @@ def do_entreprise_correspondant_listnames(context, args={}):
|
||||
|
||||
def do_entreprise_contact_delete(context, oid):
|
||||
"entreprise_contact_delete"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprise_contactEditor.delete(cnx, oid)
|
||||
|
||||
|
||||
def do_entreprise_contact_list(context, **kw):
|
||||
"entreprise_contact_list"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return _entreprise_contactEditor.list(cnx, **kw)
|
||||
|
||||
|
||||
def do_entreprise_contact_edit(context, *args, **kw):
|
||||
"entreprise_contact_edit"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_entreprise_contactEditor.edit(cnx, *args, **kw)
|
||||
|
||||
|
||||
def do_entreprise_contact_create(context, args):
|
||||
"entreprise_contact_create"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _entreprise_contactEditor.create(cnx, args)
|
||||
return r
|
||||
|
||||
@ -295,7 +296,7 @@ def do_entreprise_check_etudiant(context, etudiant):
|
||||
) # suppress parens and quote from name
|
||||
if not etudiant:
|
||||
return 1, None
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select etudid, nom, prenom from identite where upper(nom) ~ upper(%(etudiant)s) or etudid=%(etudiant)s",
|
||||
|
@ -34,6 +34,7 @@ import datetime
|
||||
|
||||
from notes_log import log, logCallStack
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from notesdb import ScoDocCursor
|
||||
from sco_exceptions import AccessDenied, ScoValueError
|
||||
import VERSION
|
||||
@ -99,7 +100,7 @@ def do_evaluation_delete(context, REQUEST, evaluation_id):
|
||||
|
||||
moduleimpl_id = the_evals[0]["moduleimpl_id"]
|
||||
context._evaluation_check_write_access(REQUEST, moduleimpl_id=moduleimpl_id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
context._evaluationEditor.delete(cnx, evaluation_id)
|
||||
# inval cache pour ce semestre
|
||||
@ -346,7 +347,7 @@ def do_evaluation_list_in_sem(context, formsemestre_id):
|
||||
|
||||
"""
|
||||
req = "select E.* from notes_evaluation E, notes_moduleimpl MI where MI.formsemestre_id = %(formsemestre_id)s and MI.moduleimpl_id = E.moduleimpl_id order by moduleimpl_id, numero desc, jour desc, heure_debut desc"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
cursor.execute(req, {"formsemestre_id": formsemestre_id})
|
||||
res = cursor.dictfetchall()
|
||||
@ -363,7 +364,7 @@ def do_evaluation_list_in_sem(context, formsemestre_id):
|
||||
# def formsemestre_evaluations_list(context, formsemestre_id):
|
||||
# """Liste (non triée) des evals pour ce semestre"""
|
||||
# req = "select E.* from notes_evaluation E, notes_moduleimpl MI where MI.formsemestre_id = %(formsemestre_id)s and MI.moduleimpl_id = E.moduleimpl_id"
|
||||
# cnx = context.GetDBConnexion()
|
||||
# cnx = ndb.GetDBConnexion()
|
||||
# cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
# cursor.execute( req, { 'formsemestre_id' : formsemestre_id } )
|
||||
# return cursor.dictfetchall()
|
||||
|
@ -191,7 +191,7 @@ def search_etuds_infos(context, expnom=None, code_nip=None, REQUEST=None):
|
||||
et ramene liste de mappings utilisables en DTML.
|
||||
"""
|
||||
may_be_nip = scu.is_valid_code_nip(expnom)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if expnom and not may_be_nip:
|
||||
expnom = scu.strupper(expnom) # les noms dans la BD sont en uppercase
|
||||
etuds = scolars.etudident_list(cnx, args={"nom": expnom}, test="~")
|
||||
|
@ -153,7 +153,7 @@ def formation_import_xml(
|
||||
ndb.quote_dict(F_quoted)
|
||||
log("F_quoted=%s" % F_quoted)
|
||||
# find new version number
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
log(
|
||||
"select max(version) from notes_formations where acronyme=%(acronyme)s and titre=%(titre)s"
|
||||
|
@ -95,7 +95,7 @@ def get_formsemestre(context, formsemestre_id):
|
||||
def do_formsemestre_list(context, *a, **kw):
|
||||
"list formsemestres"
|
||||
# log('do_formsemestre_list: a=%s kw=%s' % (str(a),str(kw)))
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
sems = _formsemestreEditor.list(cnx, *a, **kw)
|
||||
|
||||
@ -220,7 +220,7 @@ def do_formsemestre_edit(context, sem, cnx=None, **kw):
|
||||
"""Apply modifications to formsemestre.
|
||||
Update etapes and resps. Invalidate cache."""
|
||||
if not cnx:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
_formsemestreEditor.edit(cnx, sem, **kw)
|
||||
write_formsemestre_etapes(context, sem)
|
||||
|
@ -52,7 +52,7 @@ notes_formsemestre_custommenu_edit = _custommenuEditor.edit
|
||||
|
||||
def formsemestre_custommenu_get(context, formsemestre_id):
|
||||
"returns dict [ { 'title' : xxx, 'url' : xxx } ]"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
vals = notes_formsemestre_custommenu_list(cnx, {"formsemestre_id": formsemestre_id})
|
||||
return vals
|
||||
|
||||
@ -135,7 +135,7 @@ def formsemestre_custommenu_edit(context, formsemestre_id, REQUEST=None):
|
||||
return REQUEST.RESPONSE.redirect(dest_url)
|
||||
else:
|
||||
# form submission
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# add new
|
||||
if tf[2]["title_new"]:
|
||||
notes_formsemestre_custommenu_create(
|
||||
|
@ -178,7 +178,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
||||
)
|
||||
|
||||
# Liste des ID de semestres
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute("select semestre_id from notes_semestres")
|
||||
semestre_id_list = [str(x[0]) for x in cursor.fetchall()]
|
||||
@ -991,7 +991,7 @@ def do_formsemestre_clone(
|
||||
"""
|
||||
log("cloning %s" % orig_formsemestre_id)
|
||||
orig_sem = sco_formsemestre.get_formsemestre(context, orig_formsemestre_id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# 1- create sem
|
||||
args = orig_sem.copy()
|
||||
del args["formsemestre_id"]
|
||||
@ -1177,7 +1177,7 @@ def do_formsemestres_associate_new_version(context, formsemestre_ids, REQUEST=No
|
||||
if formation_id != sem["formation_id"]:
|
||||
raise ScoValueError("les semestres ne sont pas tous de la même formation !")
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# New formation:
|
||||
formation_id, modules_old2new, ues_old2new = context.formation_create_new_version(
|
||||
formation_id, redirect=False, REQUEST=REQUEST
|
||||
@ -1316,7 +1316,7 @@ def do_formsemestre_delete(context, formsemestre_id, REQUEST):
|
||||
"""delete formsemestre, and all its moduleimpls.
|
||||
No checks, no warnings: erase all !
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
|
||||
# --- Destruction des modules de ce semestre
|
||||
@ -1545,7 +1545,7 @@ def formsemestre_edit_uecoefs(context, formsemestre_id, err_ue_id=None, REQUEST=
|
||||
]
|
||||
)
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
initvalues = {"formsemestre_id": formsemestre_id}
|
||||
form = [("formsemestre_id", {"input_type": "hidden"})]
|
||||
|
@ -37,7 +37,7 @@ import sco_formsemestre_inscriptions
|
||||
import sco_formsemestre_edit
|
||||
import sco_formsemestre_validation
|
||||
import sco_parcours_dut
|
||||
import notesdb
|
||||
import notesdb as ndb
|
||||
|
||||
from sco_utils import log
|
||||
import pprint
|
||||
@ -434,7 +434,7 @@ def _list_ue_with_coef_and_validations(context, sem, etudid):
|
||||
avec leurs coefs d'UE capitalisée (si déjà saisi)
|
||||
et leur validation pour cet étudiant.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
formsemestre_id = sem["formsemestre_id"]
|
||||
ue_list = context.do_ue_list({"formation_id": sem["formation_id"]})
|
||||
for ue in ue_list:
|
||||
|
@ -32,6 +32,7 @@
|
||||
|
||||
from notes_log import log
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from sco_permissions import (
|
||||
ScoImplement,
|
||||
ScoChangeFormation,
|
||||
@ -971,7 +972,7 @@ Il y a des notes en attente ! Le classement des étudiants n'a qu'une valeur ind
|
||||
def formsemestre_status(context, formsemestre_id=None, REQUEST=None):
|
||||
"""Tableau de bord semestre HTML"""
|
||||
# porté du DTML
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
Mlist = sco_moduleimpl.do_moduleimpl_withmodule_list(
|
||||
context, formsemestre_id=formsemestre_id
|
||||
|
@ -1311,7 +1311,7 @@ def get_etud_ue_cap_html(context, etudid, formsemestre_id, ue_id, REQUEST=None):
|
||||
def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST=None):
|
||||
"""Suppress a validation (ue_id, etudid) and redirect to formsemestre"""
|
||||
log("etud_ue_suppress_validation( %s, %s, %s)" % (etudid, formsemestre_id, ue_id))
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"DELETE FROM scolar_formsemestre_validation WHERE etudid=%(etudid)s and ue_id=%(ue_id)s",
|
||||
|
@ -274,7 +274,7 @@ def get_group_members(context, group_id, etat=None):
|
||||
|
||||
def get_group_infos(context, group_id, etat=None): # was _getlisteetud
|
||||
"""legacy code: used by group_list and trombino"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
group = get_group(context, group_id)
|
||||
sem = sco_formsemestre.get_formsemestre(context, group["formsemestre_id"])
|
||||
|
||||
@ -538,7 +538,7 @@ def set_group(context, etudid, group_id):
|
||||
Return True if ok, False si deja inscrit.
|
||||
Warning: don't check if group_id exists (the caller should check).
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
args = {"etudid": etudid, "group_id": group_id}
|
||||
# déjà inscrit ?
|
||||
@ -593,7 +593,7 @@ def change_etud_group_in_partition(
|
||||
# 3- log
|
||||
formsemestre_id = partition["formsemestre_id"]
|
||||
if REQUEST:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
logdb(
|
||||
REQUEST,
|
||||
cnx,
|
||||
@ -659,7 +659,7 @@ def setGroups(
|
||||
context, etudid, group_id, partition, REQUEST=REQUEST
|
||||
)
|
||||
# Retire les anciens membres:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
for etudid in old_members_set:
|
||||
log("removing %s from group %s" % (etudid, group_id))
|
||||
@ -723,7 +723,7 @@ def createGroup(context, partition_id, group_name="", default=False, REQUEST=Non
|
||||
raise ValueError(
|
||||
"group_name %s already exists in partition" % group_name
|
||||
) # XXX FIX: incorrect error handling (in AJAX)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
group_id = groupEditor.create(
|
||||
cnx, {"partition_id": partition_id, "group_name": group_name}
|
||||
)
|
||||
@ -782,7 +782,7 @@ def partition_create(
|
||||
"Il existe déjà une partition %s dans ce semestre" % partition_name
|
||||
)
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
partition_id = partitionEditor.create(
|
||||
cnx, {"formsemestre_id": formsemestre_id, "partition_name": partition_name}
|
||||
)
|
||||
@ -945,7 +945,7 @@ def partition_set_attr(context, partition_id, attr, value, REQUEST=None):
|
||||
log("partition_set_attr(%s, %s, %s)" % (partition_id, attr, value))
|
||||
value = int(value)
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
partition[attr] = value
|
||||
partitionEditor.edit(cnx, partition)
|
||||
# invalid bulletin cache
|
||||
@ -968,7 +968,7 @@ def partition_delete(
|
||||
if not partition["partition_name"] and not force:
|
||||
raise ValueError("cannot suppress this partition")
|
||||
redirect = int(redirect)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
groups = get_partition_groups(context, partition)
|
||||
|
||||
if not dialog_confirmed:
|
||||
@ -1025,7 +1025,7 @@ def partition_move(context, partition_id, after=0, REQUEST=None, redirect=1):
|
||||
if neigh: #
|
||||
# swap numero between partition and its neighbor
|
||||
log("moving partition %s" % partition_id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
partition["numero"], neigh["numero"] = neigh["numero"], partition["numero"]
|
||||
partitionEditor.edit(cnx, partition)
|
||||
partitionEditor.edit(cnx, neigh)
|
||||
@ -1105,7 +1105,7 @@ def partition_set_name(context, partition_id, partition_name, REQUEST=None, redi
|
||||
if not can_change_groups(context, REQUEST, formsemestre_id):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
redirect = int(redirect)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
partitionEditor.edit(
|
||||
cnx, {"partition_id": partition_id, "partition_name": partition_name}
|
||||
)
|
||||
@ -1130,7 +1130,7 @@ def group_set_name(context, group_id, group_name, REQUEST=None, redirect=1):
|
||||
if not can_change_groups(context, REQUEST, formsemestre_id):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
redirect = int(redirect)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
groupEditor.edit(cnx, {"group_id": group_id, "group_name": group_name})
|
||||
|
||||
# redirect to partition edit page:
|
||||
@ -1391,7 +1391,7 @@ def do_evaluation_listeetuds_groups(
|
||||
if not include_dems:
|
||||
req += " and Isem.etat='I'"
|
||||
req += r
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(req, {"evaluation_id": evaluation_id})
|
||||
# log('listeetuds_groups: getallstudents=%s groups=%s' % (getallstudents,groups))
|
||||
@ -1410,7 +1410,7 @@ def do_evaluation_listegroupes(context, evaluation_id, include_default=False):
|
||||
c = ""
|
||||
else:
|
||||
c = " AND p.partition_name is not NULL"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"SELECT DISTINCT gd.group_id FROM group_descr gd, group_membership gm, partition p, notes_moduleimpl m, notes_evaluation e WHERE gm.group_id = gd.group_id and gd.partition_id = p.partition_id and p.formsemestre_id = m.formsemestre_id and m.moduleimpl_id = e.moduleimpl_id and e.evaluation_id = %(evaluation_id)s"
|
||||
@ -1423,7 +1423,7 @@ def do_evaluation_listegroupes(context, evaluation_id, include_default=False):
|
||||
|
||||
|
||||
def listgroups(context, group_ids):
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
groups = []
|
||||
for group_id in group_ids:
|
||||
|
@ -136,7 +136,7 @@ def list_inscrits_date(context, sem):
|
||||
"""Liste les etudiants inscrits dans n'importe quel semestre
|
||||
SAUF sem à la date de début de sem.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
sem["date_debut_iso"] = ndb.DateDMYtoISO(sem["date_debut"])
|
||||
cursor.execute(
|
||||
|
@ -86,27 +86,27 @@ _modaliteEditor = ndb.EditableTable(
|
||||
|
||||
def do_modalite_list(context, *args, **kw):
|
||||
"""Liste des modalites"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return _modaliteEditor.list(cnx, *args, **kw)
|
||||
|
||||
|
||||
def do_modalite_create(context, args, REQUEST=None):
|
||||
"create a modalite"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _modaliteEditor.create(cnx, args)
|
||||
return r
|
||||
|
||||
|
||||
def do_modalite_delete(context, oid, REQUEST=None):
|
||||
"delete a modalite"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
log("do_modalite_delete: form_modalite_id=%s" % oid)
|
||||
_modaliteEditor.delete(cnx, oid)
|
||||
|
||||
|
||||
def do_modalite_edit(context, *args, **kw):
|
||||
"edit a modalite"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check
|
||||
_ = do_modalite_list(context, {"form_modalite_id": args[0]["form_modalite_id"]})[0]
|
||||
_modaliteEditor.edit(cnx, *args, **kw)
|
||||
|
@ -31,6 +31,7 @@
|
||||
import datetime
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from notesdb import ScoDocCursor, EditableTable, DateISOtoDMY, DateDMYtoISO
|
||||
from sco_permissions import ScoImplement
|
||||
from sco_exceptions import ScoValueError, AccessDenied
|
||||
@ -62,7 +63,7 @@ _modules_enseignantsEditor = EditableTable(
|
||||
|
||||
def do_moduleimpl_create(context, args):
|
||||
"create a moduleimpl"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _moduleimplEditor.create(cnx, args)
|
||||
sco_core.inval_cache(
|
||||
context, formsemestre_id=args["formsemestre_id"]
|
||||
@ -72,7 +73,7 @@ def do_moduleimpl_create(context, args):
|
||||
|
||||
def do_moduleimpl_delete(context, oid, formsemestre_id=None):
|
||||
"delete moduleimpl (desinscrit tous les etudiants)"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# --- desinscription des etudiants
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
req = (
|
||||
@ -101,7 +102,7 @@ def do_moduleimpl_list(
|
||||
):
|
||||
"list moduleimpls"
|
||||
args = locals()
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
modimpls = _moduleimplEditor.list(cnx, args) # *args, **kw)
|
||||
# Ajoute la liste des enseignants
|
||||
for mo in modimpls:
|
||||
@ -112,7 +113,7 @@ def do_moduleimpl_list(
|
||||
def do_moduleimpl_edit(context, args, formsemestre_id=None, cnx=None):
|
||||
"edit a moduleimpl"
|
||||
if not cnx:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_moduleimplEditor.edit(cnx, args)
|
||||
|
||||
sco_core.inval_cache(context, formsemestre_id=formsemestre_id) # > modif moduleimpl
|
||||
@ -156,7 +157,7 @@ def do_moduleimpl_inscription_list(
|
||||
):
|
||||
"list moduleimpl_inscriptions"
|
||||
args = locals()
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return scu.return_text_if_published(
|
||||
_moduleimpl_inscriptionEditor.list(cnx, args), REQUEST
|
||||
)
|
||||
@ -165,7 +166,7 @@ def do_moduleimpl_inscription_list(
|
||||
def do_moduleimpl_listeetuds(context, moduleimpl_id):
|
||||
"retourne liste des etudids inscrits a ce module"
|
||||
req = "select distinct Im.etudid from notes_moduleimpl_inscription Im, notes_formsemestre_inscription Isem, notes_moduleimpl M where Isem.etudid=Im.etudid and Im.moduleimpl_id=M.moduleimpl_id and M.moduleimpl_id = %(moduleimpl_id)s"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
cursor.execute(req, {"moduleimpl_id": moduleimpl_id})
|
||||
res = cursor.fetchall()
|
||||
@ -175,7 +176,7 @@ def do_moduleimpl_listeetuds(context, moduleimpl_id):
|
||||
def do_moduleimpl_inscrit_tout_semestre(context, moduleimpl_id, formsemestre_id):
|
||||
"inscrit tous les etudiants inscrit au semestre a ce module"
|
||||
# UNUSED
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
req = """INSERT INTO notes_moduleimpl_inscription
|
||||
(moduleimpl_id, etudid)
|
||||
@ -196,7 +197,7 @@ _moduleimpl_inscriptionEditor = EditableTable(
|
||||
|
||||
def do_moduleimpl_inscription_create(context, args, REQUEST=None, formsemestre_id=None):
|
||||
"create a moduleimpl_inscription"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
log("do_moduleimpl_inscription_create: " + str(args))
|
||||
r = _moduleimpl_inscriptionEditor.create(cnx, args)
|
||||
sco_core.inval_cache(
|
||||
@ -216,7 +217,7 @@ def do_moduleimpl_inscription_create(context, args, REQUEST=None, formsemestre_i
|
||||
|
||||
def do_moduleimpl_inscription_delete(context, oid, formsemestre_id=None):
|
||||
"delete moduleimpl_inscription"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_moduleimpl_inscriptionEditor.delete(cnx, oid)
|
||||
sco_core.inval_cache(
|
||||
context, formsemestre_id=formsemestre_id
|
||||
@ -239,7 +240,7 @@ def do_moduleimpl_inscrit_etuds(
|
||||
|
||||
# Desinscriptions
|
||||
if reset:
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
cursor.execute(
|
||||
"delete from notes_moduleimpl_inscription where moduleimpl_id = %(moduleimpl_id)s",
|
||||
@ -272,27 +273,27 @@ def do_moduleimpl_inscrit_etuds(
|
||||
|
||||
def do_ens_list(context, *args, **kw):
|
||||
"liste les enseignants d'un moduleimpl (pas le responsable)"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
ens = _modules_enseignantsEditor.list(cnx, *args, **kw)
|
||||
return ens
|
||||
|
||||
|
||||
def do_ens_edit(context, *args, **kw):
|
||||
"edit ens"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
_modules_enseignantsEditor.edit(cnx, *args, **kw)
|
||||
|
||||
|
||||
def do_ens_create(context, args):
|
||||
"create ens"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _modules_enseignantsEditor.create(cnx, args)
|
||||
return r
|
||||
|
||||
|
||||
def do_ens_delete(context, oid):
|
||||
"delete ens"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _modules_enseignantsEditor.delete(cnx, oid)
|
||||
return r
|
||||
|
||||
|
@ -510,7 +510,7 @@ def is_inscrit_ue(context, etudid, formsemestre_id, ue_id):
|
||||
|
||||
def do_etud_desinscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None):
|
||||
"""Desincrit l'etudiant de tous les modules de cette UE dans ce semestre."""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""DELETE FROM notes_moduleimpl_inscription
|
||||
@ -551,7 +551,7 @@ def do_etud_inscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None):
|
||||
if not insem:
|
||||
raise ScoValueError("%s n'est pas inscrit au semestre !" % etudid)
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""SELECT mi.moduleimpl_id
|
||||
|
@ -37,7 +37,7 @@ from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from email.header import Header
|
||||
|
||||
import notesdb as ndb # pylint: disable=unused-wildcard-import
|
||||
import notesdb as ndb
|
||||
from notes_log import log
|
||||
import mails
|
||||
import scolars
|
||||
@ -81,7 +81,7 @@ def add(context, REQUEST, typ, object=None, text="", url=None, max_frequency=Fal
|
||||
secondes d'intervalle.
|
||||
"""
|
||||
authuser_name = str(REQUEST.AUTHENTICATED_USER)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
args = {
|
||||
"authenticated_user": authuser_name,
|
||||
"user_info": context.Users.user_info(user_name=authuser_name),
|
||||
@ -110,7 +110,7 @@ def scolar_news_summary(context, n=5):
|
||||
News are "compressed", ie redondant events are joined.
|
||||
"""
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute("select * from scolar_news order by date desc limit 100")
|
||||
selected_news = {} # (type,object) : news dict
|
||||
|
@ -142,7 +142,7 @@ def _menuScolarite(context, authuser, sem, etudid):
|
||||
def ficheEtud(context, etudid=None, REQUEST=None):
|
||||
"fiche d'informations sur un etudiant"
|
||||
authuser = REQUEST.AUTHENTICATED_USER
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if etudid and REQUEST:
|
||||
# la sidebar est differente s'il y a ou pas un etudid
|
||||
# voir html_sidebar.sidebar()
|
||||
|
@ -1001,7 +1001,7 @@ def formsemestre_has_decisions(context, formsemestre_id):
|
||||
"""True s'il y a au moins une validation (decision de jury) dans ce semestre
|
||||
equivalent to notes_table.sem_has_decisions() but much faster when nt not cached
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
validations = scolar_formsemestre_validation_list(
|
||||
cnx, args={"formsemestre_id": formsemestre_id}
|
||||
)
|
||||
@ -1038,7 +1038,7 @@ def formsemestre_get_autorisation_inscription(context, etudid, origin_formsemest
|
||||
"""Liste des autorisations d'inscription pour cet étudiant
|
||||
émanant du semestre indiqué.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return scolar_autorisation_inscription_list(
|
||||
cnx, {"origin_formsemestre_id": origin_formsemestre_id, "etudid": etudid}
|
||||
)
|
||||
@ -1059,7 +1059,7 @@ def formsemestre_get_etud_capitalisation(context, sem, etudid):
|
||||
'is_external'
|
||||
} ]
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""select distinct SFV.*, ue.ue_code from notes_ue ue, notes_formations nf, notes_formations nf2,
|
||||
@ -1096,7 +1096,7 @@ def list_formsemestre_utilisateurs_uecap(context, formsemestre_id):
|
||||
"""Liste des formsemestres pouvant utiliser une UE capitalisee de ce semestre
|
||||
(et qui doivent donc etre sortis du cache si l'on modifie ce
|
||||
semestre): meme code formation, meme semestre_id, date posterieure"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
F = context.formation_list(args={"formation_id": sem["formation_id"]})[0]
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
|
@ -4,6 +4,11 @@
|
||||
"""Definition of ScoDoc 8 permissions
|
||||
used by auth
|
||||
"""
|
||||
|
||||
import notesdb as ndb
|
||||
import scolars
|
||||
import sco_formsemestre
|
||||
|
||||
# Définition des permissions: ne pas changer les numéros ou l'ordre des lignes !
|
||||
_SCO_PERMISSIONS = (
|
||||
# permission bit, symbol, description
|
||||
@ -57,16 +62,13 @@ class Permission:
|
||||
|
||||
Permission.init_permissions()
|
||||
|
||||
import scolars
|
||||
import sco_formsemestre
|
||||
|
||||
|
||||
def can_suppress_annotation(context, annotation_id, REQUEST):
|
||||
"""True if current user can suppress this annotation
|
||||
Seuls l'auteur de l'annotation et le chef de dept peuvent supprimer
|
||||
une annotation.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
annos = scolars.etud_annotations_list(cnx, args={"id": annotation_id})
|
||||
if len(annos) != 1:
|
||||
raise ScoValueError("annotation inexistante !")
|
||||
|
@ -55,6 +55,7 @@ import glob
|
||||
|
||||
from config import Config
|
||||
from sco_utils import CONFIG, SCO_SRC_DIR
|
||||
import notesdb as ndb
|
||||
from notes_log import log
|
||||
|
||||
import scolars
|
||||
@ -245,7 +246,7 @@ def store_photo(context, etud, data, REQUEST=None):
|
||||
etud["photo_filename"] = filename
|
||||
etud["foto"] = None
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
scolars.identite_edit_nocheck(cnx, etud)
|
||||
cnx.commit()
|
||||
#
|
||||
@ -261,7 +262,7 @@ def suppress_photo(context, etud, REQUEST=None):
|
||||
rel_path = photo_pathname(context, etud)
|
||||
# 1- remove ref. from database
|
||||
etud["photo_filename"] = None
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
scolars.identite_edit_nocheck(cnx, etud)
|
||||
cnx.commit()
|
||||
# 2- erase images files
|
||||
|
@ -249,7 +249,7 @@ def do_placement(context, REQUEST):
|
||||
"""
|
||||
% E["moduleimpl_id"]
|
||||
)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# Infos transmises
|
||||
placement_method = REQUEST.form["placement_method"]
|
||||
teachers = REQUEST.form["teachers"]
|
||||
|
@ -1766,7 +1766,7 @@ class sco_base_preferences:
|
||||
log("loading preferences")
|
||||
try:
|
||||
scu.GSL.acquire()
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
preflist = self._editor.list(cnx)
|
||||
self.prefs = {None: {}} # { formsemestre_id (or None) : { name : value } }
|
||||
self.default = {} # { name : default_value }
|
||||
@ -1863,7 +1863,7 @@ class sco_base_preferences:
|
||||
try:
|
||||
scu.GSL.acquire()
|
||||
modif = False
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if name is None:
|
||||
names = self.prefs[formsemestre_id].keys()
|
||||
else:
|
||||
@ -1927,7 +1927,7 @@ class sco_base_preferences:
|
||||
scu.GSL.acquire()
|
||||
if formsemestre_id in self.prefs and name in self.prefs[formsemestre_id]:
|
||||
del self.prefs[formsemestre_id][name]
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
pdb = self._editor.list(
|
||||
cnx, args={"formsemestre_id": formsemestre_id, "name": name}
|
||||
)
|
||||
|
@ -217,7 +217,7 @@ def dict_pvjury(
|
||||
etudids = nt.get_etudids()
|
||||
if not etudids:
|
||||
return {}
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
max_date = "0000-01-01"
|
||||
has_prev = False # vrai si au moins un etudiant a un code prev
|
||||
|
@ -34,6 +34,7 @@ import datetime
|
||||
import psycopg2
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from notes_log import log
|
||||
from TrivialFormulator import TrivialFormulator, TF
|
||||
from notesdb import ScoDocCursor, quote_dict, DateISOtoDMY, DateDMYtoISO
|
||||
@ -997,7 +998,7 @@ def saisie_notes(context, evaluation_id, group_ids=[], REQUEST=None):
|
||||
def _get_sorted_etuds(context, E, etudids, formsemestre_id):
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
NotesDB = context._notes_getall(E["evaluation_id"]) # Notes existantes
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
etuds = []
|
||||
for etudid in etudids:
|
||||
# infos identite etudiant
|
||||
|
@ -74,7 +74,7 @@ class SemSet(dict):
|
||||
self.context = context
|
||||
self.sems = []
|
||||
self.formsemestre_ids = []
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if semset_id: # read existing set
|
||||
L = semset_list(cnx, args={"semset_id": semset_id})
|
||||
if not L:
|
||||
@ -103,11 +103,11 @@ class SemSet(dict):
|
||||
|
||||
def delete(self):
|
||||
"""delete"""
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
semset_delete(cnx, self.semset_id)
|
||||
|
||||
def edit(self, args):
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
semset_edit(cnx, args)
|
||||
|
||||
def load_sems(self):
|
||||
@ -338,7 +338,7 @@ def get_semsets_list(context):
|
||||
"""Liste de tous les semsets
|
||||
Trié par date_debut, le plus récent d'abord
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
L = []
|
||||
for s in semset_list(cnx):
|
||||
L.append(SemSet(context, semset_id=s["semset_id"]))
|
||||
@ -380,7 +380,7 @@ def edit_semset_set_title(context, id=None, value=None, REQUEST=None):
|
||||
if not id:
|
||||
raise ScoValueError("empty semset_id")
|
||||
SemSet(context, semset_id=id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
semset_edit(cnx, {"semset_id": id, "title": title})
|
||||
return title
|
||||
|
||||
|
@ -32,6 +32,7 @@ import time
|
||||
import pprint
|
||||
|
||||
import sco_utils as scu
|
||||
import notesdb as ndb
|
||||
from sco_permissions import ScoEtudInscrit
|
||||
from sco_exceptions import ScoValueError
|
||||
from notesdb import ScoDocCursor
|
||||
@ -393,7 +394,7 @@ def list_synch(context, sem, anneeapogee=None):
|
||||
[x[EKEY_APO] for x in etudsapo if x.get("paiementinscription", True)]
|
||||
)
|
||||
#
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# Tri listes
|
||||
def set_to_sorted_list(etudset, etud_apo=False, is_inscrit=False):
|
||||
def key2etud(key, etud_apo=False):
|
||||
@ -505,7 +506,7 @@ def list_all(context, etudsapo_set):
|
||||
# on charge TOUS les etudiants (au pire qq 100000 ?)
|
||||
# si tres grosse base, il serait mieux de faire une requete
|
||||
# d'interrogation par etudiant.
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ScoDocCursor)
|
||||
cursor.execute("select " + EKEY_SCO + ", etudid from identite")
|
||||
key2etudid = dict([(x[0], x[1]) for x in cursor.fetchall()])
|
||||
@ -579,7 +580,7 @@ def do_import_etuds_from_portal(context, sem, a_importer, etudsapo_ident, REQUES
|
||||
log("do_import_etuds_from_portal: a_importer=%s" % a_importer)
|
||||
if not a_importer:
|
||||
return
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
created_etudids = []
|
||||
|
||||
try: # --- begin DB transaction
|
||||
@ -790,7 +791,7 @@ def formsemestre_import_etud_admission(
|
||||
no_nip = [] # liste d'etudids sans code NIP
|
||||
unknowns = [] # etudiants avec NIP mais inconnus du portail
|
||||
changed_mails = [] # modification d'adresse mails
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
|
||||
# Essaie de recuperer les etudiants des étapes, car
|
||||
# la requete get_inscrits_etape est en général beaucoup plus
|
||||
|
@ -80,7 +80,7 @@ class ScoTag:
|
||||
else:
|
||||
# Create new tag:
|
||||
log("creating new tag: %s" % self.title)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
oid = ndb.DBInsertDict(
|
||||
cnx, self.tag_table, {"title": self.title}, commit=True
|
||||
)
|
||||
@ -122,7 +122,7 @@ class ScoTag:
|
||||
)
|
||||
if not r:
|
||||
log("tag %s with %s" % (object_id, self.title))
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
ndb.DBInsertDict(cnx, self.assoc_table, args, commit=True)
|
||||
|
||||
def remove_tag_from_object(self, object_id):
|
||||
|
@ -213,7 +213,7 @@ def get_note_history(context, evaluation_id, etudid, REQUEST=None, fmt=""):
|
||||
= liste chronologique d'opérations, la plus récente d'abord
|
||||
[ { 'value', 'date', 'comment', 'uid' } ]
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
|
||||
# Valeur courante
|
||||
|
@ -329,6 +329,10 @@ def get_dept_id():
|
||||
raise ScoInvalidDept("département invalide: %s" % g.scodoc_dept)
|
||||
|
||||
|
||||
def get_db_cnx_string():
|
||||
return "SCO" + g.scodoc_dept
|
||||
|
||||
|
||||
def ScoURL():
|
||||
"""base URL for this sco instance.
|
||||
e.g. https://scodoc.xxx.fr/ScoDoc/DEPT/Scolarite
|
||||
|
@ -32,6 +32,7 @@ import time
|
||||
import mails
|
||||
import sco_utils as scu
|
||||
from sco_utils import SCO_ENCODING
|
||||
import notesdb as ndb
|
||||
from sco_exceptions import ScoGenError, ScoValueError
|
||||
from notesdb import (
|
||||
EditableTable,
|
||||
@ -660,7 +661,7 @@ def get_etud_info(etudid=False, code_nip=False, filled=False, REQUEST=None):
|
||||
"""
|
||||
if etudid is None:
|
||||
return []
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
args = make_etud_args(etudid=etudid, code_nip=code_nip, REQUEST=REQUEST)
|
||||
etud = scolars.etudident_list(cnx, args=args)
|
||||
|
||||
@ -781,7 +782,7 @@ def add_annotations_to_etud_list(context, etuds):
|
||||
"""Add key 'annotations' describing annotations of etuds
|
||||
(used to list all annotations of a group)
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
for etud in etuds:
|
||||
l = []
|
||||
for a in etud_annotations_list(cnx, args={"etudid": etud["etudid"]}):
|
||||
@ -893,7 +894,7 @@ o.close()
|
||||
|
||||
def list_scolog(context, etudid):
|
||||
"liste des operations effectuees sur cet etudiant"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select * from scolog where etudid=%(etudid)s ORDER BY DATE DESC",
|
||||
@ -907,7 +908,7 @@ def fillEtudsInfo(context, etuds):
|
||||
Pour chaque etudiant, ajoute ou formatte les champs
|
||||
-> informations pour fiche etudiant ou listes diverses
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# open('/tmp/t','w').write( str(etuds) )
|
||||
for etud in etuds:
|
||||
etudid = etud["etudid"]
|
||||
@ -1005,7 +1006,7 @@ def fillEtudsInfo(context, etuds):
|
||||
|
||||
def descr_situation_etud(context, etudid, ne=""):
|
||||
"""chaine decrivant la situation actuelle de l'etudiant"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select I.formsemestre_id, I.etat from notes_formsemestre_inscription I, notes_formsemestre S where etudid=%(etudid)s and S.formsemestre_id = I.formsemestre_id and date_debut < now() and date_fin > now() order by S.date_debut desc;",
|
||||
|
@ -73,7 +73,7 @@ from app.views import absences_bp as bp
|
||||
|
||||
# ---------------
|
||||
from app.scodoc import sco_utils as scu
|
||||
from app.scodoc import notesdb
|
||||
from app.scodoc import notesdb as ndb
|
||||
from app.scodoc.notes_log import log
|
||||
from app.scodoc.scolog import logdb
|
||||
from app.scodoc.sco_permissions import ScoAbsAddBillet, ScoAbsChange, ScoView
|
||||
@ -164,8 +164,8 @@ def _AddAbsence(
|
||||
raise ScoValueError("date absence trop loin dans le futur !")
|
||||
estjust = _toboolean(estjust)
|
||||
matin = _toboolean(matin)
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"insert into absences (etudid,jour,estabs,estjust,matin,description, moduleimpl_id) values (%(etudid)s, %(jour)s, TRUE, %(estjust)s, %(matin)s, %(description)s, %(moduleimpl_id)s )",
|
||||
vars(),
|
||||
@ -189,8 +189,8 @@ def _AddJustif(context, etudid, jour, matin, REQUEST, description=None):
|
||||
if context._isFarFutur(jour):
|
||||
raise ScoValueError("date justificatif trop loin dans le futur !")
|
||||
matin = _toboolean(matin)
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"insert into absences (etudid,jour,estabs,estjust,matin, description) values (%(etudid)s,%(jour)s, FALSE, TRUE, %(matin)s, %(description)s )",
|
||||
vars(),
|
||||
@ -212,8 +212,8 @@ def _AnnuleAbsence(context, etudid, jour, matin, moduleimpl_id=None, REQUEST=Non
|
||||
"""
|
||||
# unpublished
|
||||
matin = _toboolean(matin)
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
req = "delete from absences where jour=%(jour)s and matin=%(matin)s and etudid=%(etudid)s and estabs"
|
||||
if moduleimpl_id:
|
||||
req += " and moduleimpl_id=%(moduleimpl_id)s"
|
||||
@ -233,8 +233,8 @@ def _AnnuleJustif(context, etudid, jour, matin, REQUEST=None):
|
||||
"Annule un justificatif"
|
||||
# unpublished
|
||||
matin = _toboolean(matin)
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"delete from absences where jour=%(jour)s and matin=%(matin)s and etudid=%(etudid)s and ESTJUST AND NOT ESTABS",
|
||||
vars(),
|
||||
@ -277,8 +277,8 @@ def AnnuleAbsencesDatesNoJust(context, etudid, dates, moduleimpl_id=None, REQUES
|
||||
raise ValueError("invalid ampm !")
|
||||
context._AnnuleAbsence(etudid, jour, matin, moduleimpl_id, REQUEST)
|
||||
return
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
# supr les absences non justifiees
|
||||
for date in dates:
|
||||
cursor.execute(
|
||||
@ -332,8 +332,8 @@ def _list_abs_in_range(
|
||||
else:
|
||||
modul = ""
|
||||
if not cursor:
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""
|
||||
SELECT DISTINCT A.JOUR, A.MATIN
|
||||
@ -382,8 +382,8 @@ def CountAbsJust(context, etudid, debut, fin, matin=None, moduleimpl_id=None):
|
||||
modul = " AND A.MODULEIMPL_ID = %(moduleimpl_id)s "
|
||||
else:
|
||||
modul = ""
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""SELECT COUNT(*) AS NbAbsJust FROM (
|
||||
SELECT DISTINCT A.JOUR, A.MATIN
|
||||
@ -406,8 +406,8 @@ WHERE A.ETUDID = %(etudid)s
|
||||
|
||||
def _ListeAbsDate(context, etudid, beg_date, end_date):
|
||||
# Liste des absences et justifs entre deux dates
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""SELECT jour, matin, estabs, estjust, description FROM ABSENCES A
|
||||
WHERE A.ETUDID = %(etudid)s
|
||||
@ -451,8 +451,8 @@ def _ListeAbsDate(context, etudid, beg_date, end_date):
|
||||
@scodoc7func(context)
|
||||
def ListeAbsJust(context, etudid, datedebut):
|
||||
"Liste des absences justifiees (par ordre chronologique)"
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""SELECT DISTINCT A.ETUDID, A.JOUR, A.MATIN FROM ABSENCES A, ABSENCES B
|
||||
WHERE A.ETUDID = %(etudid)s
|
||||
@ -474,8 +474,8 @@ ORDER BY A.JOUR
|
||||
@scodoc7func(context)
|
||||
def ListeAbsNonJust(context, etudid, datedebut):
|
||||
"Liste des absences NON justifiees (par ordre chronologique)"
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"""SELECT ETUDID, JOUR, MATIN FROM ABSENCES A
|
||||
WHERE A.ETUDID = %(etudid)s
|
||||
@ -502,8 +502,8 @@ def ListeJustifs(context, etudid, datedebut, datefin=None, only_no_abs=False):
|
||||
ou, si datefin spécifié, entre deux dates.
|
||||
Si only_no_abs: seulement les justificatifs correspondant aux jours sans absences relevées.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
req = """SELECT DISTINCT ETUDID, JOUR, MATIN FROM ABSENCES A
|
||||
WHERE A.ETUDID = %(etudid)s
|
||||
AND A.ESTJUST
|
||||
@ -527,8 +527,8 @@ AND B.ETUDID = %(etudid)s
|
||||
def _GetAbsDescription(context, a, cursor=None):
|
||||
"Description associee a l'absence"
|
||||
if not cursor:
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
a = a.copy()
|
||||
# a['jour'] = a['jour'].date()
|
||||
if a["matin"]: # devrait etre booleen... :-(
|
||||
@ -569,8 +569,8 @@ def ListeAbsJour(context, date, am=True, pm=True, is_abs=True, is_just=None):
|
||||
is_abs: None (peu importe), True, False
|
||||
is_just: idem
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
req = """SELECT DISTINCT etudid, jour, matin FROM ABSENCES A
|
||||
WHERE A.jour = %(date)s
|
||||
"""
|
||||
@ -595,8 +595,8 @@ WHERE A.jour = %(date)s
|
||||
@scodoc7func(context)
|
||||
def ListeAbsNonJustJour(context, date, am=True, pm=True):
|
||||
"Liste des absences non justifiees ce jour"
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
reqa = ""
|
||||
if not am:
|
||||
reqa += " AND NOT matin "
|
||||
@ -746,7 +746,7 @@ def SignaleAbsenceGrHebdo(
|
||||
|
||||
# calcule dates jours de cette semaine
|
||||
# liste de dates iso "yyyy-mm-dd"
|
||||
datessem = [notesdb.DateDMYtoISO(datelundi)]
|
||||
datessem = [ndb.DateDMYtoISO(datelundi)]
|
||||
for _ in sco_abs.day_names(context)[1:]:
|
||||
datessem.append(sco_abs.next_iso_day(context, datessem[-1]))
|
||||
#
|
||||
@ -1121,8 +1121,8 @@ def _gen_form_saisie_groupe(
|
||||
'<tr><td><span class="redboldtext">Aucun étudiant inscrit !</span></td></tr>'
|
||||
)
|
||||
i = 1
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
for etud in etuds:
|
||||
i += 1
|
||||
etudid = etud["etudid"]
|
||||
@ -1241,8 +1241,8 @@ def _TablesAbsEtud(
|
||||
absnonjust = context.ListeAbsNonJust(etudid=etudid, datedebut=datedebut)
|
||||
# examens ces jours là ?
|
||||
if with_evals:
|
||||
cnx = context.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=notesdb.ScoDocCursor)
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
for a in absnonjust + absjust:
|
||||
cursor.execute(
|
||||
"""select eval.*
|
||||
@ -1370,8 +1370,8 @@ def EtatAbsencesGr(
|
||||
REQUEST=None,
|
||||
):
|
||||
"""Liste les absences de groupes"""
|
||||
datedebut = notesdb.DateDMYtoISO(debut)
|
||||
datefin = notesdb.DateDMYtoISO(fin)
|
||||
datedebut = ndb.DateDMYtoISO(debut)
|
||||
datefin = ndb.DateDMYtoISO(fin)
|
||||
# Informations sur les groupes à afficher:
|
||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||
context, group_ids, REQUEST=REQUEST
|
||||
@ -1515,7 +1515,7 @@ def EtatAbsencesDate(
|
||||
)
|
||||
]
|
||||
if date:
|
||||
dateiso = notesdb.DateDMYtoISO(date)
|
||||
dateiso = ndb.DateDMYtoISO(date)
|
||||
nbetud = 0
|
||||
t_nbabsjustam = 0
|
||||
t_nbabsam = 0
|
||||
@ -1620,7 +1620,7 @@ def AddBilletAbsence(
|
||||
#
|
||||
justified = int(justified)
|
||||
#
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
billet_id = sco_abs.billet_absence_create(
|
||||
cnx,
|
||||
{
|
||||
@ -1766,7 +1766,7 @@ def listeBilletsEtud(context, etudid=False, REQUEST=None, format="html"):
|
||||
return scu.log_unknown_etud(context, format=format, REQUEST=REQUEST)
|
||||
|
||||
etud = etuds[0]
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
billets = sco_abs.billet_absence_list(cnx, {"etudid": etud["etudid"]})
|
||||
tab = context._tableBillets(billets, etud=etud)
|
||||
return tab.make_page(context, REQUEST=REQUEST, format=format)
|
||||
@ -1790,7 +1790,7 @@ def XMLgetBilletsEtud(context, etudid=False, REQUEST=None):
|
||||
@scodoc7func(context)
|
||||
def listeBillets(context, REQUEST=None):
|
||||
"""Page liste des billets non traités et formulaire recherche d'un billet"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
billets = sco_abs.billet_absence_list(cnx, {"etat": 0})
|
||||
tab = context._tableBillets(billets)
|
||||
T = tab.html()
|
||||
@ -1820,7 +1820,7 @@ def listeBillets(context, REQUEST=None):
|
||||
@scodoc7func(context)
|
||||
def deleteBilletAbsence(context, billet_id, REQUEST=None, dialog_confirmed=False):
|
||||
"""Supprime un billet."""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
billets = sco_abs.billet_absence_list(cnx, {"billet_id": billet_id})
|
||||
if not billets:
|
||||
return REQUEST.RESPONSE.redirect(
|
||||
@ -1846,7 +1846,7 @@ def _ProcessBilletAbsence(context, billet, estjust, description, REQUEST):
|
||||
et change l'état du billet à 1.
|
||||
NB: actuellement, les heures ne sont utilisées que pour déterminer si matin et/ou après-midi.
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if billet["etat"] != 0:
|
||||
log("billet=%s" % billet)
|
||||
log("billet deja traité !")
|
||||
@ -1896,7 +1896,7 @@ def _ProcessBilletAbsence(context, billet, estjust, description, REQUEST):
|
||||
@scodoc7func(context)
|
||||
def ProcessBilletAbsenceForm(context, billet_id, REQUEST=None):
|
||||
"""Formulaire traitement d'un billet"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
billets = sco_abs.billet_absence_list(cnx, {"billet_id": billet_id})
|
||||
if not billets:
|
||||
return REQUEST.RESPONSE.redirect(
|
||||
|
@ -418,7 +418,7 @@ def do_formation_delete(context, oid, REQUEST):
|
||||
F = context.formation_list(args={"formation_id": oid})[0]
|
||||
if context.formation_has_locked_sems(oid):
|
||||
raise ScoLockedFormError()
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# delete all UE in this formation
|
||||
ues = context.do_ue_list({"formation_id": oid})
|
||||
for ue in ues:
|
||||
@ -449,7 +449,7 @@ def formation_list(context, format=None, REQUEST=None, formation_id=None, args={
|
||||
args = {}
|
||||
else:
|
||||
args = {"formation_id": formation_id}
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = _formationEditor.list(cnx, args=args)
|
||||
# log('%d formations found' % len(r))
|
||||
return scu.sendResult(REQUEST, r, name="formation", format=format)
|
||||
@ -575,7 +575,7 @@ _ueEditor = ndb.EditableTable(
|
||||
@scodoc7func(context)
|
||||
def do_ue_create(context, args, REQUEST):
|
||||
"create an ue"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check duplicates
|
||||
ues = context.do_ue_list(
|
||||
{"formation_id": args["formation_id"], "acronyme": args["acronyme"]}
|
||||
@ -599,7 +599,7 @@ def do_ue_create(context, args, REQUEST):
|
||||
|
||||
def _do_ue_delete(context, ue_id, delete_validations=False, REQUEST=None, force=False):
|
||||
"delete UE and attached matieres (but not modules (it should ?))"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
log("do_ue_delete: ue_id=%s, delete_validations=%s" % (ue_id, delete_validations))
|
||||
# check
|
||||
ue = context.do_ue_list({"ue_id": ue_id})
|
||||
@ -645,7 +645,7 @@ def _do_ue_delete(context, ue_id, delete_validations=False, REQUEST=None, force=
|
||||
ndb.SimpleQuery(
|
||||
context, "DELETE FROM scolar_events WHERE ue_id=%(ue_id)s", {"ue_id": ue_id}
|
||||
)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._ueEditor.delete(cnx, ue_id)
|
||||
# > UE delete + supr. validations associées etudiants (cas compliqué, mais rarement utilisé: acceptable de tout invalider ?):
|
||||
sco_core.inval_cache(context)
|
||||
@ -672,7 +672,7 @@ def _do_ue_delete(context, ue_id, delete_validations=False, REQUEST=None, force=
|
||||
@scodoc7func(context)
|
||||
def do_ue_list(context, *args, **kw):
|
||||
"list UEs"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return context._ueEditor.list(cnx, *args, **kw)
|
||||
|
||||
|
||||
@ -691,7 +691,7 @@ _matiereEditor = ndb.EditableTable(
|
||||
@scodoc7func(context)
|
||||
def do_matiere_create(context, args, REQUEST):
|
||||
"create a matiere"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check
|
||||
ue = context.do_ue_list({"ue_id": args["ue_id"]})[0]
|
||||
# create matiere
|
||||
@ -714,7 +714,7 @@ def do_matiere_create(context, args, REQUEST):
|
||||
@scodoc7func(context)
|
||||
def do_matiere_delete(context, oid, REQUEST):
|
||||
"delete matiere and attached modules"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check
|
||||
mat = context.do_matiere_list({"matiere_id": oid})[0]
|
||||
ue = context.do_ue_list({"ue_id": mat["ue_id"]})[0]
|
||||
@ -747,7 +747,7 @@ def do_matiere_delete(context, oid, REQUEST):
|
||||
@scodoc7func(context)
|
||||
def do_matiere_list(context, *args, **kw):
|
||||
"list matieres"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return context._matiereEditor.list(cnx, *args, **kw)
|
||||
|
||||
|
||||
@ -756,7 +756,7 @@ def do_matiere_list(context, *args, **kw):
|
||||
@scodoc7func(context)
|
||||
def do_matiere_edit(context, *args, **kw):
|
||||
"edit a matiere"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check
|
||||
mat = context.do_matiere_list({"matiere_id": args[0]["matiere_id"]})[0]
|
||||
if sco_edit_matiere.matiere_is_locked(context, mat["matiere_id"]):
|
||||
@ -771,7 +771,7 @@ def do_matiere_edit(context, *args, **kw):
|
||||
@scodoc7func(context)
|
||||
def do_matiere_formation_id(context, matiere_id):
|
||||
"get formation_id from matiere"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select UE.formation_id from notes_matieres M, notes_ue UE where M.matiere_id = %(matiere_id)s and M.ue_id = UE.ue_id",
|
||||
@ -822,7 +822,7 @@ _moduleEditor = ndb.EditableTable(
|
||||
def do_module_create(context, args, REQUEST):
|
||||
"create a module"
|
||||
# create
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = context._moduleEditor.create(cnx, args)
|
||||
|
||||
# news
|
||||
@ -859,7 +859,7 @@ def do_module_delete(context, oid, REQUEST):
|
||||
)
|
||||
raise ScoGenError(err_page)
|
||||
# delete
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._moduleEditor.delete(cnx, oid)
|
||||
|
||||
# news
|
||||
@ -878,7 +878,7 @@ def do_module_delete(context, oid, REQUEST):
|
||||
@scodoc7func(context)
|
||||
def do_module_list(context, *args, **kw):
|
||||
"list modules"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return context._moduleEditor.list(cnx, *args, **kw)
|
||||
|
||||
|
||||
@ -896,7 +896,7 @@ def do_module_edit(context, val):
|
||||
if f in val:
|
||||
del val[f]
|
||||
# edit
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._moduleEditor.edit(cnx, val)
|
||||
|
||||
sems = sco_formsemestre.do_formsemestre_list(
|
||||
@ -968,7 +968,7 @@ def module_move(context, module_id, after=0, REQUEST=None, redirect=1):
|
||||
if neigh: #
|
||||
# swap numero between partition and its neighbor
|
||||
# log('moving module %s' % module_id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
module["numero"], neigh["numero"] = neigh["numero"], module["numero"]
|
||||
if module["numero"] == neigh["numero"]:
|
||||
neigh["numero"] -= 2 * after - 1
|
||||
@ -1003,7 +1003,7 @@ def ue_move(context, ue_id, after=0, REQUEST=None, redirect=1):
|
||||
if neigh: #
|
||||
# swap numero between partition and its neighbor
|
||||
# log('moving ue %s (neigh #%s)' % (ue_id, neigh['numero']))
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
o["numero"], neigh["numero"] = neigh["numero"], o["numero"]
|
||||
if o["numero"] == neigh["numero"]:
|
||||
neigh["numero"] -= 2 * after - 1
|
||||
@ -1022,7 +1022,7 @@ def ue_move(context, ue_id, after=0, REQUEST=None, redirect=1):
|
||||
@scodoc7func(context)
|
||||
def do_formsemestre_create(context, args, REQUEST, silent=False):
|
||||
"create a formsemestre"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
formsemestre_id = sco_formsemestre._formsemestreEditor.create(cnx, args)
|
||||
if args["etapes"]:
|
||||
args["formsemestre_id"] = formsemestre_id
|
||||
@ -1550,7 +1550,7 @@ def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id):
|
||||
sem = sco_formsemestre_edit.can_edit_sem(context, REQUEST, formsemestre_id)
|
||||
if not sem:
|
||||
raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération")
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
#
|
||||
ue = context.do_ue_list({"ue_id": ue_id})[0]
|
||||
H = [
|
||||
@ -1641,7 +1641,7 @@ def formsemestre_enseignants_list(context, REQUEST, formsemestre_id, format="htm
|
||||
else:
|
||||
sem_ens[ensd["ens_id"]]["mods"].append(mod)
|
||||
# compte les absences ajoutées par chacun dans tout le semestre
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
for ens in sem_ens:
|
||||
cursor.execute(
|
||||
@ -1733,7 +1733,7 @@ _formsemestre_inscriptionEditor = ndb.EditableTable(
|
||||
@scodoc7func(context)
|
||||
def do_formsemestre_inscription_create(context, args, REQUEST, method=None):
|
||||
"create a formsemestre_inscription (and sco event)"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
log("do_formsemestre_inscription_create: args=%s" % str(args))
|
||||
sems = sco_formsemestre.do_formsemestre_list(
|
||||
context, {"formsemestre_id": args["formsemestre_id"]}
|
||||
@ -1777,7 +1777,7 @@ def do_formsemestre_inscription_create(context, args, REQUEST, method=None):
|
||||
@scodoc7func(context)
|
||||
def do_formsemestre_inscription_delete(context, oid, formsemestre_id=None):
|
||||
"delete formsemestre_inscription"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._formsemestre_inscriptionEditor.delete(cnx, oid)
|
||||
|
||||
sco_core.inval_cache(
|
||||
@ -1790,7 +1790,7 @@ def do_formsemestre_inscription_delete(context, oid, formsemestre_id=None):
|
||||
@scodoc7func(context)
|
||||
def do_formsemestre_inscription_list(context, *args, **kw):
|
||||
"list formsemestre_inscriptions"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
return context._formsemestre_inscriptionEditor.list(cnx, *args, **kw)
|
||||
|
||||
|
||||
@ -1817,7 +1817,7 @@ def do_formsemestre_inscription_listinscrits(
|
||||
@scodoc7func(context)
|
||||
def do_formsemestre_inscription_edit(context, args=None, formsemestre_id=None):
|
||||
"edit a formsemestre_inscription"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._formsemestre_inscriptionEditor.edit(cnx, args)
|
||||
sco_core.inval_cache(
|
||||
context, formsemestre_id=formsemestre_id
|
||||
@ -1929,7 +1929,7 @@ def do_formsemestre_desinscription(context, etudid, formsemestre_id, REQUEST=Non
|
||||
raise ScoValueError("%s n'est pas inscrit au semestre !" % etudid)
|
||||
insem = insem[0]
|
||||
# -- desinscription de tous les modules
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute(
|
||||
"select moduleimpl_inscription_id from notes_moduleimpl_inscription Im, notes_moduleimpl M where Im.etudid=%(etudid)s and Im.moduleimpl_id = M.moduleimpl_id and M.formsemestre_id = %(formsemestre_id)s",
|
||||
@ -2170,7 +2170,7 @@ def do_evaluation_create(
|
||||
args["numero"] = n
|
||||
|
||||
#
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
r = context._evaluationEditor.create(cnx, args)
|
||||
|
||||
# news
|
||||
@ -2330,7 +2330,7 @@ def do_evaluation_list(context, args, sortkey=None):
|
||||
'apresmidi' : 1 (termine après 12:00) ou 0
|
||||
'descrheure' : ' de 15h00 à 16h30'
|
||||
"""
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
evals = context._evaluationEditor.list(cnx, args, sortkey=sortkey)
|
||||
# calcule duree (chaine de car.) de chaque evaluation et ajoute jouriso, matin, apresmidi
|
||||
for e in evals:
|
||||
@ -2396,7 +2396,7 @@ def do_evaluation_edit(context, REQUEST, args):
|
||||
args["moduleimpl_id"] = moduleimpl_id
|
||||
context._check_evaluation_args(args)
|
||||
context._evaluation_check_write_access(REQUEST, moduleimpl_id=moduleimpl_id)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context._evaluationEditor.edit(cnx, args)
|
||||
# inval cache pour ce semestre
|
||||
M = sco_moduleimpl.do_moduleimpl_list(context, moduleimpl_id=moduleimpl_id)[0]
|
||||
@ -2514,7 +2514,7 @@ def _notes_getall(
|
||||
r = cache.get(evaluation_id)
|
||||
if r != None:
|
||||
return r
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cond = " where evaluation_id=%(evaluation_id)s"
|
||||
if by_uid:
|
||||
@ -2725,7 +2725,7 @@ def appreciation_add_form(
|
||||
REQUEST=None,
|
||||
):
|
||||
"form ajout ou edition d'une appreciation"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
authuser = REQUEST.AUTHENTICATED_USER
|
||||
if id: # edit mode
|
||||
apps = scolars.appreciations_list(cnx, args={"id": id})
|
||||
|
@ -367,7 +367,7 @@ def etud_info(context, etudid=None, format="xml", REQUEST=None):
|
||||
"Donne les informations sur un etudiant"
|
||||
t0 = time.time()
|
||||
args = make_etud_args(etudid=etudid, REQUEST=REQUEST)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
etuds = scolars.etudident_list(cnx, args)
|
||||
if not etuds:
|
||||
# etudiant non trouvé: message d'erreur
|
||||
@ -521,7 +521,7 @@ sco_publish(
|
||||
def doAddAnnotation(context, etudid, comment, REQUEST):
|
||||
"ajoute annotation sur etudiant"
|
||||
authuser = REQUEST.AUTHENTICATED_USER
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
scolars.etud_annotations_create(
|
||||
cnx,
|
||||
args={
|
||||
@ -543,7 +543,7 @@ def doSuppressAnnotation(context, etudid, annotation_id, REQUEST):
|
||||
if not sco_permissions.can_suppress_annotation(context, annotation_id, REQUEST):
|
||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
annos = scolars.etud_annotations_list(cnx, args={"id": annotation_id})
|
||||
if len(annos) != 1:
|
||||
raise ScoValueError("annotation inexistante !")
|
||||
@ -562,7 +562,7 @@ def doSuppressAnnotation(context, etudid, annotation_id, REQUEST):
|
||||
@scodoc7func(context)
|
||||
def formChangeCoordonnees(context, etudid, REQUEST):
|
||||
"edit coordonnees etudiant"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
etud = scolars.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
|
||||
adrs = scolars.adresse_list(cnx, {"etudid": etudid})
|
||||
if adrs:
|
||||
@ -895,7 +895,7 @@ def _doDem_or_Def_Etudiant(
|
||||
"Démission ou défaillance d'un étudiant"
|
||||
# marque 'D' ou DEF dans l'inscription au semestre et ajoute
|
||||
# un "evenement" scolarite
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
# check lock
|
||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||
if sem["etat"] != "1":
|
||||
@ -1011,7 +1011,7 @@ def _doCancelDem_or_Def(
|
||||
if ins["etat"] != etat_current:
|
||||
raise ScoException("etudiant non %s !!!" % etat_current) # obviously a bug
|
||||
ins["etat"] = etat_new
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
context.Notes.do_formsemestre_inscription_edit(
|
||||
args=ins, formsemestre_id=formsemestre_id
|
||||
)
|
||||
@ -1048,7 +1048,7 @@ def _etudident_create_or_edit_form(context, REQUEST, edit):
|
||||
H = [html_sco_header.sco_header(context, REQUEST, init_jquery_ui=True)]
|
||||
F = context.sco_footer(REQUEST)
|
||||
etudid = REQUEST.form.get("etudid", None)
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
descr = []
|
||||
if not edit:
|
||||
# creation nouvel etudiant
|
||||
@ -1446,7 +1446,7 @@ def _etudident_create_or_edit_form(context, REQUEST, edit):
|
||||
@scodoc7func(context)
|
||||
def etudident_delete(context, etudid, dialog_confirmed=False, REQUEST=None):
|
||||
"Delete a student"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
etuds = scolars.etudident_list(cnx, {"etudid": etudid})
|
||||
if not etuds:
|
||||
raise ScoValueError("Etudiant inexistant !")
|
||||
@ -1520,7 +1520,7 @@ def check_group_apogee(
|
||||
members, group, _, sem, _ = sco_groups.get_group_infos(context, group_id, etat=etat)
|
||||
formsemestre_id = group["formsemestre_id"]
|
||||
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
H = [
|
||||
context.Notes.html_sem_header(
|
||||
REQUEST, "Etudiants du %s" % (group["group_name"] or "semestre"), sem
|
||||
@ -2014,7 +2014,7 @@ sco_publish(
|
||||
@scodoc7func(context)
|
||||
def stat_bac(context, formsemestre_id):
|
||||
"Renvoie statistisques sur nb d'etudiants par bac"
|
||||
cnx = context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
ins = context.Notes.do_formsemestre_inscription_list(
|
||||
args={"formsemestre_id": formsemestre_id}
|
||||
)
|
||||
|
@ -21,6 +21,7 @@ random.seed(12345) # tests reproductibles
|
||||
from debug import REQUEST
|
||||
|
||||
import sco_utils
|
||||
import notesdb as ndb
|
||||
from notes_log import log
|
||||
from sco_exceptions import ScoValueError
|
||||
import scolars
|
||||
@ -34,18 +35,10 @@ import sco_edit_ue
|
||||
import sco_codes_parcours
|
||||
import sco_saisie_notes
|
||||
|
||||
<<<<<<< HEAD
|
||||
DEMO_DIR = sco_utils.SCO_SRC_DIR + "/scotests/demo/"
|
||||
NOMS = [x.strip() for x in open(DEMO_DIR + "/noms.txt").readlines()]
|
||||
PRENOMS_H = [x.strip() for x in open(DEMO_DIR + "/prenoms-h.txt").readlines()]
|
||||
PRENOMS_F = [x.strip() for x in open(DEMO_DIR + "/prenoms-f.txt").readlines()]
|
||||
=======
|
||||
DEMODIR = sco_utils.SCO_SRCDIR + "/scotests/demo/"
|
||||
NOMS = [x.strip() for x in open(DEMODIR + "/noms.txt").readlines()]
|
||||
PRENOMS_H = [x.strip() for x in open(DEMODIR + "/prenoms-h.txt").readlines()]
|
||||
PRENOMS_F = [x.strip() for x in open(DEMODIR + "/prenoms-f.txt").readlines()]
|
||||
PRENOMS_X = [x.strip() for x in open(DEMODIR + "/prenoms-x.txt").readlines()]
|
||||
>>>>>>> a50a9eb8e8ed1b949c5ca16250186345f2f9e066
|
||||
# nb: en python2, les chaines ci-dessus sont en utf8
|
||||
|
||||
|
||||
@ -115,7 +108,7 @@ class ScoFake:
|
||||
):
|
||||
"""Crée un étudiant"""
|
||||
if not cnx:
|
||||
cnx = self.context.GetDBConnexion()
|
||||
cnx = ndb.GetDBConnexion()
|
||||
if code_nip == "":
|
||||
code_nip = str(random.randint(10000, 99999))
|
||||
if not civilite or not nom or not prenom:
|
||||
|
Loading…
Reference in New Issue
Block a user