105 if not self.req.form.get(param): |
105 if not self.req.form.get(param): |
106 missing.append(param) |
106 missing.append(param) |
107 if missing: |
107 if missing: |
108 raise RequestError('missing required parameter(s): %s' |
108 raise RequestError('missing required parameter(s): %s' |
109 % ','.join(missing)) |
109 % ','.join(missing)) |
110 |
|
111 def parse_datetime(self, value, etype='Datetime'): |
|
112 """get a datetime or time from a string (according to etype) |
|
113 Datetime formatted as Date are accepted |
|
114 """ |
|
115 assert etype in ('Datetime', 'Date', 'Time'), etype |
|
116 # XXX raise proper validation error |
|
117 if etype == 'Datetime': |
|
118 format = self.req.property_value('ui.datetime-format') |
|
119 try: |
|
120 return todatetime(strptime(value, format)) |
|
121 except: |
|
122 pass |
|
123 elif etype == 'Time': |
|
124 format = self.req.property_value('ui.time-format') |
|
125 try: |
|
126 # (adim) I can't find a way to parse a Time with a custom format |
|
127 date = strptime(value, format) # this returns a DateTime |
|
128 return datetime.time(date.hour, date.minute, date.second) |
|
129 except: |
|
130 raise ValueError('can\'t parse %r (expected %s)' % (value, format)) |
|
131 try: |
|
132 format = self.req.property_value('ui.date-format') |
|
133 dt = strptime(value, format) |
|
134 if etype == 'Datetime': |
|
135 return todatetime(dt) |
|
136 return todate(dt) |
|
137 except: |
|
138 raise ValueError('can\'t parse %r (expected %s)' % (value, format)) |
|
139 |
110 |
140 |
111 |
141 def notify_edited(self, entity): |
112 def notify_edited(self, entity): |
142 """called by edit_entity() to notify which entity is edited""" |
113 """called by edit_entity() to notify which entity is edited""" |
143 # NOTE: we can't use entity.rest_path() at this point because |
114 # NOTE: we can't use entity.rest_path() at this point because |