utils.py
branch3.5
changeset 3234 e454590f1b80
parent 3231 3ee43e2f8560
child 3293 69c0ba095536
child 3316 c4c07aab1c39
equal deleted inserted replaced
3233:7ac07c3a9659 3234:e454590f1b80
     9 
     9 
    10 from logilab.mtconverter import xml_escape
    10 from logilab.mtconverter import xml_escape
    11 
    11 
    12 import locale
    12 import locale
    13 from md5 import md5
    13 from md5 import md5
       
    14 import datetime as pydatetime
    14 from datetime import datetime, timedelta, date
    15 from datetime import datetime, timedelta, date
    15 from time import time, mktime
    16 from time import time, mktime
    16 from random import randint, seed
    17 from random import randint, seed
    17 from calendar import monthrange
    18 from calendar import monthrange
       
    19 import decimal
       
    20 
       
    21 import simplejson
    18 
    22 
    19 # initialize random seed from current time
    23 # initialize random seed from current time
    20 seed()
    24 seed()
    21 try:
    25 try:
    22     strptime = datetime.strptime
    26     strptime = datetime.strptime
   346         print e
   350         print e
   347         __answer[0] = False
   351         __answer[0] = False
   348         return False
   352         return False
   349     __answer[0] = True
   353     __answer[0] = True
   350     return True
   354     return True
       
   355 
       
   356 
       
   357 class CubicWebJsonEncoder(simplejson.JSONEncoder):
       
   358     """define a simplejson encoder to be able to encode yams std types"""
       
   359     def default(self, obj):
       
   360         if isinstance(obj, pydatetime.datetime):
       
   361             return obj.strftime('%Y/%m/%d %H:%M:%S')
       
   362         elif isinstance(obj, pydatetime.date):
       
   363             return obj.strftime('%Y/%m/%d')
       
   364         elif isinstance(obj, pydatetime.time):
       
   365             return obj.strftime('%H:%M:%S')
       
   366         elif isinstance(obj, decimal.Decimal):
       
   367             return float(obj)
       
   368         try:
       
   369             return simplejson.JSONEncoder.default(self, obj)
       
   370         except TypeError:
       
   371             # we never ever want to fail because of an unknown type,
       
   372             # just return None in those cases.
       
   373             return None