web/controller.py
changeset 1984 8d571df6012a
parent 1977 606923dff11b
child 2001 c6bb482f40c6
equal deleted inserted replaced
1983:5edd22d0e61a 1984:8d571df6012a
   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