2 # -*- coding: utf-8 -*-
5 # Un "objetsql" dispose de tout ce qui est nécessaire pour extraire
6 # les données (accès au MS-SQL) et pour en faire le rendu final
7 # (accès au système de template)
9 # Il analyse également l'environnement WSGI afin d'en extraire
10 # les données de filtrage (extrait des arguments de l'URL, après le ?)
14 from pymssql
import connect
16 # le système de template
17 from jinja
import Environment
, FileSystemLoader
18 ejinja
= Environment(loader
=FileSystemLoader('/home/thomas/public_html/templates/'))
20 # le système d'analyse des variables HTTP
21 from paste
.request
import parse_formvars
23 # accès à la configuration (données pour la connexion MS-SQL)
25 sys
.path
.append('/home/thomas/public_html/')
29 class objetsql(object):
30 """Objet de base : dispose d'un accès à MS-SQL (lire les données) et d'un accès à jinja (rendu des données)"""
31 def __init__(self
, environ
):
32 """Conserve l'environnement WSGI et analyse les variables HTTP"""
33 self
.environ
= environ
34 parse_formvars(environ
) # extraction des variables de query_string et POST
35 self
.filters
= environ
['paste.parsed_formvars'][0].dict_of_lists() # puis traduction en dictionnaire {var1:[val1,val2], ...}
36 def template(self
,template
):
37 """Retourne un environnement de rendu"""
38 self
.outputformat
= self
.environ
['wsgiorg.routing_args'][1].get('format','xml')
39 return ejinja
.get_template('%s.%s' % (template
,self
.outputformat
))
41 """Retourne un curseur vers la base de données"""
42 if not hasattr(self
,'db_connect'):
43 self
.db_connect
= connect(host
=rest_config
.host
,user
=rest_config
.user
,password
=rest_config
.password
,database
=rest_config
.database
)
44 if not hasattr(self
,'db_cursor'):
45 self
.db_cursor
= self
.db_connect
.cursor()
48 """Destructeur : coupe la connexion à MSSQL à la mort de l'objet"""
49 # (normalement ça se fait tout seul mais j'en suis pas sûr sûr)
50 if hasattr(self
,'db_connect'):