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): |