from pymssql import connect
# le système de template
-from jinja import Environment, FileSystemLoader
-ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/modeles/'))
+from template import ejinja
# le système d'analyse des variables HTTP
from paste.request import parse_formvars
sys.path.append('/home/thomas/public_html/')
import rest_config
-# dates bien affichées dans jinja : filtre date
-import locale
-from datetime import datetime
-def do_joliedate():
- def wrapped(env, context, value):
- if isinstance(value, datetime):
- locale.setlocale(locale.LC_ALL,'fr_FR.UTF-8')
- if (value.hour + value.minute + value.second) > 0:
- return value.strftime('%A %d %B %Y, %Hh%Mmin')
- else:
- return value.strftime('%A %d %B %Y')
- else:
- return value
- return wrapped
-ejinja.filters['joliedate'] = do_joliedate
-
class Objet(object):
"""Objet de base : dispose d'un accès à MS-SQL (lire les données) et d'un accès à jinja (rendu des données)"""
--- /dev/null
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# le système de template : jinja
+from jinja import Environment, FileSystemLoader
+ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/modeles/'))
+
+# ajout de filtres :
+
+# dates bien affichées dans jinja : filtre date
+import locale
+from datetime import datetime
+def do_joliedate():
+ def wrapped(env, context, value):
+ if isinstance(value, datetime):
+ locale.setlocale(locale.LC_ALL,'fr_FR.UTF-8')
+ if (value.hour + value.minute + value.second) > 0:
+ return value.strftime('%A %d %B %Y, %Hh%Mmin')
+ else:
+ return value.strftime('%A %d %B %Y')
+ else:
+ return value
+ return wrapped
+
+ejinja.filters['joliedate'] = do_joliedate
+
+# json avec extension pour datetime et Decimal
+import simplejson
+from decimal import Decimal
+
+class ComplexEncoder(simplejson.JSONEncoder):
+ def default(self, obj):
+ if isinstance(obj, datetime):
+ return '%s EDT' % obj # EDT = timezone montreal
+ elif isinstance(obj, Decimal):
+ return '%s' % obj
+ else:
+ return simplejson.JSONEncoder.default(self, obj)
+
+def do_json():
+ def wrapped(env, context, value):
+ return simplejson.dumps(value, cls=ComplexEncoder, indent=4, sort_keys=True)
+ return wrapped
+
+ejinja.filters['json'] = do_json
+