Commit 1a40daec authored by Paul Brown's avatar Paul Brown

add fix for issue #734, allow saving blank times

parent 50de6ff0
...@@ -69,24 +69,29 @@ class TimeField(fields.Field): ...@@ -69,24 +69,29 @@ class TimeField(fields.Field):
def _value(self): def _value(self):
if self.raw_data: if self.raw_data:
return u' '.join(self.raw_data) return u' '.join(self.raw_data)
elif self.data is not None:
return self.data.strftime(self.default_format)
else: else:
return self.data and self.data.strftime(self.default_format) or u'' return u''
def process_formdata(self, valuelist): def process_formdata(self, valuelist):
if valuelist: if valuelist:
date_str = u' '.join(valuelist) date_str = u' '.join(valuelist)
for format in self.formats: if date_str.strip():
try: for format in self.formats:
timetuple = time.strptime(date_str, format) try:
self.data = datetime.time(timetuple.tm_hour, timetuple = time.strptime(date_str, format)
timetuple.tm_min, self.data = datetime.time(timetuple.tm_hour,
timetuple.tm_sec) timetuple.tm_min,
return timetuple.tm_sec)
except ValueError: return
pass except ValueError:
pass
raise ValueError(gettext('Invalid time format'))
raise ValueError(gettext('Invalid time format'))
else:
self.data = None
class Select2Field(fields.SelectField): class Select2Field(fields.SelectField):
......
...@@ -121,7 +121,9 @@ def test_model(): ...@@ -121,7 +121,9 @@ def test_model():
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
rv = client.post('/admin/model1/new/', rv = client.post('/admin/model1/new/',
data=dict(test1='test1large', test2='test2')) data=dict(test1='test1large',
test2='test2',
time_field=time(0,0,0)))
eq_(rv.status_code, 302) eq_(rv.status_code, 302)
model = db.session.query(Model1).first() model = db.session.query(Model1).first()
...@@ -137,6 +139,9 @@ def test_model(): ...@@ -137,6 +139,9 @@ def test_model():
url = '/admin/model1/edit/?id=%s' % model.id url = '/admin/model1/edit/?id=%s' % model.id
rv = client.get(url) rv = client.get(url)
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
# verify that midnight does not show as blank
ok_(u'00:00:00' in rv.data.decode('utf-8'))
rv = client.post(url, rv = client.post(url,
data=dict(test1='test1small', test2='test2large')) data=dict(test1='test1small', test2='test2large'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment