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""" |