web/controller.py
branchtls-sprint
changeset 1016 26387b836099
parent 757 01740274e774
child 1092 b8fbb95dc0eb
equal deleted inserted replaced
1014:4792a1bb72a9 1016:26387b836099
     5 :copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     5 :copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     6 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
     6 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
     7 """
     7 """
     8 __docformat__ = "restructuredtext en"
     8 __docformat__ = "restructuredtext en"
     9 
     9 
    10 from mx.DateTime import strptime, Error as MxDTError, TimeDelta
    10 from datetime import timedelta
    11 
    11 
    12 from cubicweb import typed_eid
    12 from cubicweb import typed_eid
       
    13 from cubicweb.utils import strptime
    13 from cubicweb.common.registerers import priority_registerer
    14 from cubicweb.common.registerers import priority_registerer
    14 from cubicweb.selectors import yes, require_group_compat
    15 from cubicweb.selectors import yes, require_group_compat
    15 from cubicweb.appobject import AppObject
    16 from cubicweb.appobject import AppObject
    16 from cubicweb.web import LOGGER, Redirect, RequestError
    17 from cubicweb.web import LOGGER, Redirect, RequestError
    17 
    18 
   105         # XXX raise proper validation error
   106         # XXX raise proper validation error
   106         if etype == 'Datetime':
   107         if etype == 'Datetime':
   107             format = self.req.property_value('ui.datetime-format')
   108             format = self.req.property_value('ui.datetime-format')
   108             try:
   109             try:
   109                 return strptime(value, format)
   110                 return strptime(value, format)
   110             except MxDTError:
   111             except:
   111                 pass
   112                 pass
   112         elif etype == 'Time':
   113         elif etype == 'Time':
   113             format = self.req.property_value('ui.time-format')
   114             format = self.req.property_value('ui.time-format')
   114             try:
   115             try:
   115                 # (adim) I can't find a way to parse a Time with a custom format
   116                 # (adim) I can't find a way to parse a Time with a custom format
   116                 date = strptime(value, format) # this returns a DateTime
   117                 date = strptime(value, format) # this returns a DateTime
   117                 return TimeDelta(date.hour, date.minute, date.second)
   118                 return timedelta(0, date.hour *60*60 + date.minute*60 + date.second, 0)
   118             except MxDTError:
   119             except:
   119                 raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   120                 raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   120         try:
   121         try:
   121             format = self.req.property_value('ui.date-format')
   122             format = self.req.property_value('ui.date-format')
   122             return strptime(value, format)
   123             return strptime(value, format)
   123         except MxDTError:
   124         except:
   124             raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   125             raise ValueError('can\'t parse %r (expected %s)' % (value, format))
   125 
   126 
   126 
   127 
   127     def notify_edited(self, entity):
   128     def notify_edited(self, entity):
   128         """called by edit_entity() to notify which entity is edited"""
   129         """called by edit_entity() to notify which entity is edited"""