17 from datetime import datetime, timedelta, date |
17 from datetime import datetime, timedelta, date |
18 from time import time, mktime |
18 from time import time, mktime |
19 from random import randint, seed |
19 from random import randint, seed |
20 from calendar import monthrange |
20 from calendar import monthrange |
21 import decimal |
21 import decimal |
22 |
|
23 import simplejson |
|
24 |
22 |
25 # initialize random seed from current time |
23 # initialize random seed from current time |
26 seed() |
24 seed() |
27 try: |
25 try: |
28 strptime = datetime.strptime |
26 strptime = datetime.strptime |
362 return False |
360 return False |
363 __answer[0] = True |
361 __answer[0] = True |
364 return True |
362 return True |
365 |
363 |
366 try: |
364 try: |
367 # may not be there is cubicweb-web not there |
365 # may not be there if cubicweb-web not installed |
368 from simplejson import JSONEncoder, dumps |
366 from simplejson import dumps, JSONEncoder |
369 except ImportError: |
367 except ImportError: |
370 pass |
368 pass |
371 else: |
369 else: |
|
370 |
372 class CubicWebJsonEncoder(JSONEncoder): |
371 class CubicWebJsonEncoder(JSONEncoder): |
373 """define a simplejson encoder to be able to encode yams std types""" |
372 """define a simplejson encoder to be able to encode yams std types""" |
374 def default(self, obj): |
373 def default(self, obj): |
375 if isinstance(obj, datetime): |
374 if isinstance(obj, pydatetime.datetime): |
376 return obj.strftime('%Y/%m/%d %H:%M:%S') |
375 return obj.strftime('%Y/%m/%d %H:%M:%S') |
377 elif isinstance(obj, date): |
376 elif isinstance(obj, pydatetime.date): |
378 return obj.strftime('%Y/%m/%d') |
377 return obj.strftime('%Y/%m/%d') |
379 elif isinstance(obj, pydatetime.time): |
378 elif isinstance(obj, pydatetime.time): |
380 return obj.strftime('%H:%M:%S') |
379 return obj.strftime('%H:%M:%S') |
381 elif isinstance(obj, decimal.Decimal): |
380 elif isinstance(obj, decimal.Decimal): |
382 return float(obj) |
381 return float(obj) |
383 try: |
382 try: |
384 return simplejson.JSONEncoder.default(self, obj) |
383 return JSONEncoder.default(self, obj) |
385 except TypeError: |
384 except TypeError: |
386 # we never ever want to fail because of an unknown type, |
385 # we never ever want to fail because of an unknown type, |
387 # just return None in those cases. |
386 # just return None in those cases. |
388 return None |
387 return None |