ajout filtre json ; systeme de template dans .py a part
[restcoda.git] / template.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 # le système de template : jinja
5 from jinja import Environment, FileSystemLoader
6 ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/modeles/'))
7
8 # ajout de filtres :
9
10 # dates bien affichées dans jinja : filtre date
11 import locale
12 from datetime import datetime
13 def 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
25 ejinja.filters['joliedate'] = do_joliedate
26
27 # json avec extension pour datetime et Decimal
28 import simplejson
29 from decimal import Decimal
30
31 class 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
40 def do_json():
41 def wrapped(env, context, value):
42 return simplejson.dumps(value, cls=ComplexEncoder, indent=4, sort_keys=True)
43 return wrapped
44
45 ejinja.filters['json'] = do_json
46