forked from ScoDoc/ScoDoc
python-modernize + code cleaning
This commit is contained in:
parent
0c33d363ca
commit
53cba824eb
@ -30,9 +30,8 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from flask import g, url_for
|
from flask import g, url_for
|
||||||
|
|
||||||
from . import listhistogram
|
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
|
from . import listhistogram
|
||||||
|
|
||||||
|
|
||||||
def horizontal_bargraph(value, mark):
|
def horizontal_bargraph(value, mark):
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
|
||||||
def ListHistogram(L, nbins, minmax=None, normalize=None):
|
def ListHistogram(L, nbins, minmax=None):
|
||||||
"""Compute histogram of a list.
|
"""Compute histogram of a list.
|
||||||
Does not use Numeric or numarray.
|
Does not use Numeric or numarray.
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
NOTA: inutilisable dans une instance Zope (can't pickle functions)
|
NOTA: inutilisable dans une instance Zope (can't pickle functions)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
from app.scodoc.notes_log import log
|
from app.scodoc.notes_log import log
|
||||||
|
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ class CacheFunc(object):
|
|||||||
self.cache = {} # { arguments : function result }
|
self.cache = {} # { arguments : function result }
|
||||||
|
|
||||||
def __call__(self, *args):
|
def __call__(self, *args):
|
||||||
if self.cache.has_key(args):
|
if args in self.cache:
|
||||||
# log('cache hit %s' % str(args))
|
# log('cache hit %s' % str(args))
|
||||||
return self.cache[args]
|
return self.cache[args]
|
||||||
else:
|
else:
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import inspect
|
import inspect
|
||||||
@ -67,7 +68,7 @@ def retreive_request(skip=0):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def search(frame):
|
def search(frame):
|
||||||
if frame.f_locals.has_key("REQUEST"):
|
if "REQUEST" in frame.f_locals:
|
||||||
return frame.f_locals["REQUEST"]
|
return frame.f_locals["REQUEST"]
|
||||||
if frame.f_back:
|
if frame.f_back:
|
||||||
return search(frame.f_back)
|
return search(frame.f_back)
|
||||||
@ -99,9 +100,9 @@ def retreive_dept():
|
|||||||
|
|
||||||
# Alarms by email:
|
# Alarms by email:
|
||||||
def sendAlarm(context, subj, txt):
|
def sendAlarm(context, subj, txt):
|
||||||
import sco_utils
|
from . import sco_utils
|
||||||
import sco_emails
|
from . import sco_emails
|
||||||
import sco_preferences
|
from . import sco_preferences
|
||||||
|
|
||||||
msg = MIMEMultipart()
|
msg = MIMEMultipart()
|
||||||
subj = Header(subj, sco_utils.SCO_ENCODING)
|
subj = Header(subj, sco_utils.SCO_ENCODING)
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
"""Calculs sur les notes et cache des resultats
|
"""Calculs sur les notes et cache des resultats
|
||||||
"""
|
"""
|
||||||
|
from __future__ import absolute_import
|
||||||
from types import StringType, FloatType
|
from types import StringType, FloatType
|
||||||
import time
|
import time
|
||||||
import pdb
|
import pdb
|
||||||
@ -121,7 +122,7 @@ def get_sem_ues_modimpls(context, formsemestre_id, modimpls=None):
|
|||||||
if not mod["ue_id"] in uedict:
|
if not mod["ue_id"] in uedict:
|
||||||
ue = sco_edit_ue.do_ue_list(context, args={"ue_id": mod["ue_id"]})[0]
|
ue = sco_edit_ue.do_ue_list(context, args={"ue_id": mod["ue_id"]})[0]
|
||||||
uedict[ue["ue_id"]] = ue
|
uedict[ue["ue_id"]] = ue
|
||||||
ues = uedict.values()
|
ues = list(uedict.values())
|
||||||
ues.sort(key=lambda u: u["numero"])
|
ues.sort(key=lambda u: u["numero"])
|
||||||
return ues, modimpls
|
return ues, modimpls
|
||||||
|
|
||||||
@ -259,7 +260,7 @@ class NotesTable:
|
|||||||
self.comp_ue_capitalisees()
|
self.comp_ue_capitalisees()
|
||||||
|
|
||||||
# Liste des moyennes de tous, en chaines de car., triées
|
# Liste des moyennes de tous, en chaines de car., triées
|
||||||
self._ues = uedict.values()
|
self._ues = list(uedict.values())
|
||||||
self._ues.sort(key=lambda u: u["numero"])
|
self._ues.sort(key=lambda u: u["numero"])
|
||||||
|
|
||||||
T = []
|
T = []
|
||||||
@ -421,7 +422,7 @@ class NotesTable:
|
|||||||
|
|
||||||
def get_etud_etat(self, etudid):
|
def get_etud_etat(self, etudid):
|
||||||
"Etat de l'etudiant: 'I', 'D', DEF ou '' (si pas connu dans ce semestre)"
|
"Etat de l'etudiant: 'I', 'D', DEF ou '' (si pas connu dans ce semestre)"
|
||||||
if self.inscrdict.has_key(etudid):
|
if etudid in self.inscrdict:
|
||||||
return self.inscrdict[etudid]["etat"]
|
return self.inscrdict[etudid]["etat"]
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
@ -1081,7 +1082,7 @@ class NotesTable:
|
|||||||
)
|
)
|
||||||
decisions_jury_ues = {}
|
decisions_jury_ues = {}
|
||||||
for (etudid, ue_id, code, event_date) in cursor.fetchall():
|
for (etudid, ue_id, code, event_date) in cursor.fetchall():
|
||||||
if not decisions_jury_ues.has_key(etudid):
|
if etudid not in decisions_jury_ues:
|
||||||
decisions_jury_ues[etudid] = {}
|
decisions_jury_ues[etudid] = {}
|
||||||
# Calcul des ECTS associes a cette UE:
|
# Calcul des ECTS associes a cette UE:
|
||||||
ects = 0.0
|
ects = 0.0
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
import pdb, os, sys, string
|
import pdb, os, sys, string
|
||||||
import traceback
|
import traceback
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.pool
|
import psycopg2.pool
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import thread
|
|
||||||
|
|
||||||
from flask import g
|
from flask import g
|
||||||
|
|
||||||
@ -36,27 +36,6 @@ def unquote(s):
|
|||||||
return s.replace("&", "&")
|
return s.replace("&", "&")
|
||||||
|
|
||||||
|
|
||||||
# Ramene une connexion a la base de donnees scolarite
|
|
||||||
# pour l'instance donnee par context
|
|
||||||
# La connexion est unique (réutilisée) pour chaque thread
|
|
||||||
# et est par défaut en autocommit
|
|
||||||
# _pools = {}
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# 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=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:
|
|
||||||
# cnx.autocommit = autocommit
|
|
||||||
# return cnx
|
|
||||||
|
|
||||||
|
|
||||||
def open_dept_connection():
|
def open_dept_connection():
|
||||||
"""Open a connection to the current dept db"""
|
"""Open a connection to the current dept db"""
|
||||||
# log("open_dept_connection to " + scu.get_db_cnx_string()) # XXX
|
# log("open_dept_connection to " + scu.get_db_cnx_string()) # XXX
|
||||||
@ -75,22 +54,6 @@ def GetDBConnexion(autocommit=True): # on n'utilise plus autocommit
|
|||||||
return g.db_conn
|
return g.db_conn
|
||||||
|
|
||||||
|
|
||||||
# Same for users:
|
|
||||||
_users_pools = {}
|
|
||||||
|
|
||||||
|
|
||||||
def GetUsersDBConnexion(context, autocommit=True):
|
|
||||||
pool = _users_pools.get(scu.get_db_cnx_string(), None)
|
|
||||||
if not pool:
|
|
||||||
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
|
|
||||||
return cnx
|
|
||||||
|
|
||||||
|
|
||||||
# Nota: on pourrait maintenant utiliser psycopg2.extras.DictCursor
|
# Nota: on pourrait maintenant utiliser psycopg2.extras.DictCursor
|
||||||
class ScoDocCursor(psycopg2.extensions.cursor):
|
class ScoDocCursor(psycopg2.extensions.cursor):
|
||||||
"""A database cursor emulating some methods of psycopg v1 cursors"""
|
"""A database cursor emulating some methods of psycopg v1 cursors"""
|
||||||
@ -130,7 +93,7 @@ def DBInsertDict(cnx, table, vals, commit=0, convert_empty_to_nulls=1):
|
|||||||
if vals[col] == "":
|
if vals[col] == "":
|
||||||
vals[col] = None
|
vals[col] = None
|
||||||
# open('/tmp/vals','a').write( str(vals) + '\n' )
|
# open('/tmp/vals','a').write( str(vals) + '\n' )
|
||||||
cols = vals.keys()
|
cols = list(vals.keys())
|
||||||
colnames = ",".join(cols)
|
colnames = ",".join(cols)
|
||||||
fmt = ",".join(["%%(%s)s" % col for col in cols])
|
fmt = ",".join(["%%(%s)s" % col for col in cols])
|
||||||
# print 'insert into %s (%s) values (%s)' % (table,colnames,fmt)
|
# print 'insert into %s (%s) values (%s)' % (table,colnames,fmt)
|
||||||
@ -329,13 +292,13 @@ class EditableTable:
|
|||||||
def create(self, cnx, args, has_uniq_values=False):
|
def create(self, cnx, args, has_uniq_values=False):
|
||||||
"create object in table"
|
"create object in table"
|
||||||
vals = dictfilter(args, self.dbfields, self.filter_nulls)
|
vals = dictfilter(args, self.dbfields, self.filter_nulls)
|
||||||
if vals.has_key(self.id_name) and not self.allow_set_id:
|
if self.id_name in vals and not self.allow_set_id:
|
||||||
del vals[self.id_name]
|
del vals[self.id_name]
|
||||||
if self.html_quote:
|
if self.html_quote:
|
||||||
quote_dict(vals) # quote all HTML markup
|
quote_dict(vals) # quote all HTML markup
|
||||||
# format value
|
# format value
|
||||||
for title in vals.keys():
|
for title in vals.keys():
|
||||||
if self.input_formators.has_key(title):
|
if title in self.input_formators:
|
||||||
vals[title] = self.input_formators[title](vals[title])
|
vals[title] = self.input_formators[title](vals[title])
|
||||||
# insert
|
# insert
|
||||||
oid = DBInsertDict(cnx, self.table_name, vals, commit=True)
|
oid = DBInsertDict(cnx, self.table_name, vals, commit=True)
|
||||||
@ -405,7 +368,7 @@ class EditableTable:
|
|||||||
if v is None and self.convert_null_outputs_to_empty:
|
if v is None and self.convert_null_outputs_to_empty:
|
||||||
v = ""
|
v = ""
|
||||||
# format value
|
# format value
|
||||||
if not disable_formatting and self.output_formators.has_key(k):
|
if not disable_formatting and k in self.output_formators:
|
||||||
try: # XXX debug "isodate"
|
try: # XXX debug "isodate"
|
||||||
v = self.output_formators[k](v)
|
v = self.output_formators[k](v)
|
||||||
except:
|
except:
|
||||||
@ -422,7 +385,7 @@ class EditableTable:
|
|||||||
quote_dict(vals) # quote HTML
|
quote_dict(vals) # quote HTML
|
||||||
# format value
|
# format value
|
||||||
for title in vals.keys():
|
for title in vals.keys():
|
||||||
if self.input_formators.has_key(title):
|
if title in self.input_formators:
|
||||||
try:
|
try:
|
||||||
vals[title] = self.input_formators[title](vals[title])
|
vals[title] = self.input_formators[title](vals[title])
|
||||||
except:
|
except:
|
||||||
@ -491,7 +454,7 @@ def dictfilter(d, fields, filter_nulls=True):
|
|||||||
# returns a copy of d with only keys listed in "fields" and non null values
|
# returns a copy of d with only keys listed in "fields" and non null values
|
||||||
r = {}
|
r = {}
|
||||||
for f in fields:
|
for f in fields:
|
||||||
if d.has_key(f) and (d[f] != None or not filter_nulls):
|
if f in d and (d[f] != None or not filter_nulls):
|
||||||
try:
|
try:
|
||||||
val = d[f].strip()
|
val = d[f].strip()
|
||||||
except:
|
except:
|
||||||
@ -656,7 +619,7 @@ def UniqListofDicts(L, key):
|
|||||||
d = {}
|
d = {}
|
||||||
for item in L:
|
for item in L:
|
||||||
d[item[key]] = item
|
d[item[key]] = item
|
||||||
return d.values()
|
return list(d.values())
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -90,7 +90,6 @@ def is_valid_password(cleartxt):
|
|||||||
# ---------------
|
# ---------------
|
||||||
|
|
||||||
# ---------------
|
# ---------------
|
||||||
# XXX TODO supprimer ndb.GetUsersDBConnexion
|
|
||||||
|
|
||||||
|
|
||||||
def index_html(context, REQUEST, all_depts=False, with_inactives=False, format="html"):
|
def index_html(context, REQUEST, all_depts=False, with_inactives=False, format="html"):
|
||||||
|
Loading…
Reference in New Issue
Block a user