2 # -*- coding: utf-8 -*-
5 # Classe pour un utilisateur
6 # (export de la vue auf_v_acces_users)
8 from objetsql
import ObjetSQL
, ObjetSQLInconnuError
9 from utils
import dict_fetchone
11 class utilisateur(ObjetSQL
):
12 """objet utilisateur CODA"""
13 accept_like_filters
= [ 'code', 'nom', 'nom_connexion', 'implantation' ]
14 def __init__(self
, environ
):
15 super(utilisateur
, self
).__init__(environ
)
16 # TODO : voir si on peut faire le filtrage dans "objetsql"
17 # filtrage : on extrait la liste des filtres "acceptes" pour en faire des where
19 for filter in self
.accept_like_filters
:
20 if filter in self
.filters
:
22 for v
in self
.filters
[filter]:
23 or_list
.append("%s like '%s'" % (filter,v
.replace('*','%')))
24 sqlwhere
.append('(' + ' or '.join(or_list
) + ')')
25 # TODO : ajouter filtres min_*/max_*, avant/apres dans ce sqlwhere
26 self
.sqlwhere
= ' and '.join(sqlwhere
)
27 # filtrage : valeur en cas de limite ("top n" en ODBC), 200 maxi
28 if 'limite' in self
.filters
:
29 self
.sqllimit
= min( int(self
.filters
['limite'][0]), 200 )
32 # TODO : ajouter filtres tri_asc/tri_desc
36 """renvoie une liste d'utilisateur"""
37 # connexion a la base de données
38 cursor
= self
.cursor()
39 if self
.sqlwhere
!= '': self
.sqlwhere
= ' where ' + self
.sqlwhere
40 # extraction des données
41 cursor
.execute("select top %d * from auf_v_acces_users %s order by date_connexion desc" % ( self
.sqllimit
, self
.sqlwhere
) )
44 item
= dict_fetchone( cursor
)
45 if item
== None: break
48 index
['filtres'] = self
.filters
49 index
['utilisateurs'] = items
52 def _get_utilisateur(self
,code
):
53 """renvoie un utilisateur"""
54 cursor
= self
.cursor()
55 if self
.sqlwhere
!= '': self
.sqlwhere
= ' and ' + self
.sqlwhere
56 cursor
.execute("select top 1 * from auf_v_acces_users where (code like '%s') %s" % (code
, self
.sqlwhere
))
57 utilisateur
= dict_fetchone(cursor
)
58 if utilisateur
== None:
59 raise ObjetSQLInconnuError('utilisateur')
63 """renvoie une liste d'utilisateurs formatée"""
64 template
= self
.template('utilisateur-index') # préparation du modèle
65 index
= self
._get_index( ) # extraction des documents concernés
66 output
= template
.render( index
) # formattage via le modèle
67 return self
.outputformat
, output
70 """renvoie un utilisateur formaté"""
71 code
= self
.environ
['wsgiorg.routing_args'][1]['id'].replace('*','%').upper()
72 template
= self
.template( 'utilisateur' )
73 utilisateur
= self
._get_utilisateur( code
)
74 output
= template
.render( utilisateur
)
75 return self
.outputformat
, output