ajout filtre json ; systeme de template dans .py a part
[restcoda.git] / template.py
CommitLineData
3e2ae479
TN
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4# le système de template : jinja
5from jinja import Environment, FileSystemLoader
6ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/modeles/'))
7
8# ajout de filtres :
9
10# dates bien affichées dans jinja : filtre date
11import locale
12from datetime import datetime
13def do_joliedate():
14 def wrapped(env, context, value):
15 if isinstance(value, datetime):
16 locale.setlocale(locale.LC_ALL,'fr_FR.UTF-8')
17 if (value.hour + value.minute + value.second) > 0:
18 return value.strftime('%A %d %B %Y, %Hh%Mmin')
19 else:
20 return value.strftime('%A %d %B %Y')
21 else:
22 return value
23 return wrapped
24
25ejinja.filters['joliedate'] = do_joliedate
26
27# json avec extension pour datetime et Decimal
28import simplejson
29from decimal import Decimal
30
31class ComplexEncoder(simplejson.JSONEncoder):
32 def default(self, obj):
33 if isinstance(obj, datetime):
34 return '%s EDT' % obj # EDT = timezone montreal
35 elif isinstance(obj, Decimal):
36 return '%s' % obj
37 else:
38 return simplejson.JSONEncoder.default(self, obj)
39
40def do_json():
41 def wrapped(env, context, value):
42 return simplejson.dumps(value, cls=ComplexEncoder, indent=4, sort_keys=True)
43 return wrapped
44
45ejinja.filters['json'] = do_json
46