web/controller.py
branchtls-sprint
changeset 1649 ab3c662b6ebe
parent 1484 183da3addf0e
child 1977 606923dff11b
equal deleted inserted replaced
1648:4735d7e77a82 1649:ab3c662b6ebe
     8 __docformat__ = "restructuredtext en"
     8 __docformat__ = "restructuredtext en"
     9 
     9 
    10 import datetime
    10 import datetime
    11 
    11 
    12 from cubicweb import typed_eid
    12 from cubicweb import typed_eid
    13 from cubicweb.utils import strptime
    13 from cubicweb.utils import strptime, todate, todatetime
    14 from cubicweb.selectors import yes, require_group_compat
    14 from cubicweb.selectors import yes, require_group_compat
    15 from cubicweb.appobject import AppObject
    15 from cubicweb.appobject import AppObject
    16 from cubicweb.web import LOGGER, Redirect, RequestError
    16 from cubicweb.web import LOGGER, Redirect, RequestError
    17 
    17 
    18 
    18 
   114         assert etype in ('Datetime', 'Date', 'Time'), etype
   114         assert etype in ('Datetime', 'Date', 'Time'), etype
   115         # XXX raise proper validation error
   115         # XXX raise proper validation error
   116         if etype == 'Datetime':
   116         if etype == 'Datetime':
   117             format = self.req.property_value('ui.datetime-format')
   117             format = self.req.property_value('ui.datetime-format')
   118             try:
   118             try:
   119                 return strptime(value, format)
   119                 return todatetime(strptime(value, format))
   120             except:
   120             except:
   121                 pass
   121                 pass
   122         elif etype == 'Time':
   122         elif etype == 'Time':
   123             format = self.req.property_value('ui.time-format')
   123             format = self.req.property_value('ui.time-format')
   124             try:
   124             try:
   125                 # (adim) I can't find a way to parse a Time with a custom format
   125                 # (adim) I can't find a way to parse a Time with a custom format
   126                 date = strptime(value, format) # this returns a DateTime
   126                 date = strptime(value, format) # this returns a DateTime
   127                 return datetime.timedelta(0, date.hour *60*60 + date.minute*60 + date.second, 0)
   127                 return datetime.time(date.hour, date.minute, date.second)
   128             except:
   128             except:
   129                 raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   129                 raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   130         try:
   130         try:
   131             format = self.req.property_value('ui.date-format')
   131             format = self.req.property_value('ui.date-format')
   132             dt = strptime(value, format)
   132             dt = strptime(value, format)
   133             return datetime.date(dt.year, dt.month, dt.day)
   133             if etype == 'Datetime':
       
   134                 return todatetime(dt)
       
   135             return todate(dt)
   134         except:
   136         except:
   135             raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   137             raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   136 
   138 
   137 
   139 
   138     def notify_edited(self, entity):
   140     def notify_edited(self, entity):