cubicweb/utils.py
changeset 11715 760d5c0ae08f
parent 11057 0b59724cb3f2
child 11767 432f87a63057
equal deleted inserted replaced
11714:73201a210007 11715:760d5c0ae08f
    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.