equal
deleted
inserted
replaced
10 __docformat__ = "restructuredtext en" |
10 __docformat__ = "restructuredtext en" |
11 |
11 |
12 import csv |
12 import csv |
13 import decimal |
13 import decimal |
14 import re |
14 import re |
|
15 from datetime import datetime, date, timedelta |
15 from urllib import quote as urlquote |
16 from urllib import quote as urlquote |
16 from cStringIO import StringIO |
17 from cStringIO import StringIO |
17 from copy import deepcopy |
18 from copy import deepcopy |
18 |
|
19 |
|
20 from mx.DateTime import DateTimeType, DateTimeDeltaType |
|
21 |
19 |
22 from logilab.common.textutils import unormalize |
20 from logilab.common.textutils import unormalize |
23 from logilab.mtconverter import html_escape, html_unescape |
21 from logilab.mtconverter import html_escape, html_unescape |
24 |
22 |
25 from cubicweb.utils import ustrftime |
23 from cubicweb.utils import ustrftime |
507 import simplejson |
505 import simplejson |
508 def newfunc(*args, **kwargs): |
506 def newfunc(*args, **kwargs): |
509 ret = function(*args, **kwargs) |
507 ret = function(*args, **kwargs) |
510 if isinstance(ret, decimal.Decimal): |
508 if isinstance(ret, decimal.Decimal): |
511 ret = float(ret) |
509 ret = float(ret) |
512 elif isinstance(ret, DateTimeType): |
510 elif isinstance(ret, (date, datetime)): |
513 ret = ret.strftime('%Y-%m-%d %H:%M') |
511 ret = ret.strftime('%Y-%m-%d %H:%M') |
514 elif isinstance(ret, DateTimeDeltaType): |
512 elif isinstance(ret, timedelta): |
515 ret = ret.seconds |
513 ret = (ret.days * 24*60*60) + ret.seconds |
516 try: |
514 try: |
517 return simplejson.dumps(ret) |
515 return simplejson.dumps(ret) |
518 except TypeError: |
516 except TypeError: |
519 return simplejson.dumps(repr(ret)) |
517 return simplejson.dumps(repr(ret)) |
520 return newfunc |
518 return newfunc |