equal
deleted
inserted
replaced
19 |
19 |
20 from __future__ import division |
20 from __future__ import division |
21 |
21 |
22 __docformat__ = "restructuredtext en" |
22 __docformat__ = "restructuredtext en" |
23 |
23 |
|
24 import base64 |
24 import decimal |
25 import decimal |
25 import datetime |
26 import datetime |
26 import random |
27 import random |
27 import re |
28 import re |
28 import json |
29 import json |
39 from six.moves.urllib.parse import urlparse |
40 from six.moves.urllib.parse import urlparse |
40 |
41 |
41 from logilab.mtconverter import xml_escape |
42 from logilab.mtconverter import xml_escape |
42 from logilab.common.deprecation import deprecated |
43 from logilab.common.deprecation import deprecated |
43 from logilab.common.date import ustrftime |
44 from logilab.common.date import ustrftime |
|
45 |
|
46 from cubicweb import Binary |
|
47 |
44 |
48 |
45 _MARKER = object() |
49 _MARKER = object() |
46 |
50 |
47 # initialize random seed from current time |
51 # initialize random seed from current time |
48 random.seed() |
52 random.seed() |
505 return obj.strftime('%H:%M:%S') |
509 return obj.strftime('%H:%M:%S') |
506 elif isinstance(obj, datetime.timedelta): |
510 elif isinstance(obj, datetime.timedelta): |
507 return (obj.days * 24 * 60 * 60) + obj.seconds |
511 return (obj.days * 24 * 60 * 60) + obj.seconds |
508 elif isinstance(obj, decimal.Decimal): |
512 elif isinstance(obj, decimal.Decimal): |
509 return float(obj) |
513 return float(obj) |
|
514 elif isinstance(obj, Binary): |
|
515 return base64.b64encode(obj.getvalue()).decode('ascii') |
510 try: |
516 try: |
511 return json.JSONEncoder.default(self, obj) |
517 return json.JSONEncoder.default(self, obj) |
512 except TypeError: |
518 except TypeError: |
513 # we never ever want to fail because of an unknown type, |
519 # we never ever want to fail because of an unknown type, |
514 # just return None in those cases. |
520 # just return None in those cases. |