diff -r 7792f095d94a -r 86d805a56843 annot-server/webapp/admin.py --- a/annot-server/webapp/admin.py Wed Oct 22 01:52:52 2014 +0200 +++ b/annot-server/webapp/admin.py Wed Oct 22 08:53:33 2014 +0200 @@ -6,6 +6,8 @@ import json import urllib +from dateutil.tz import tzutc + from flask.ext.admin import Admin from flask.ext.admin.contrib.sqla import ModelView from flask.ext.admin.contrib.sqla.form import AdminModelConverter @@ -76,13 +78,27 @@ if valuelist: self.data = json.loads(valuelist[0]) else: - self.data = '{}' + self.data = None + class JsonAdminConverter(AdminModelConverter): @converts('JSON') def conv_JSON(self, field_args, **extra): return DictToJSONField(**field_args) + +class StartTSField(dateutil_fields.DateTimeField): + def __init__(self, *args, **kwargs): + if 'display_format' not in kwargs: + kwargs['display_format']='%Y-%m-%dT%H:%M:%S.%f%z' + super(StartTSField, self).__init__(*args, **kwargs) + + def process_formdata(self, valuelist): + super(StartTSField, self).process_formdata(valuelist) + if self.data and self.data.tzinfo is None: + self.data = self.data.replace(tzinfo=tzutc()) + + class EventSessionView(ModelView): column_default_sort = ( models.Event.code, True) @@ -91,10 +107,7 @@ column_list = ('event', 'project_id', 'order', 'categories_json', 'url') column_filters = ('event',) column_formatters = {'url': build_ldt_url, 'categories_json': lambda v, c, m, p: json.dumps(m.categories_json)[:80] if m.categories_json else ''} - form_args = { - "start_ts":{ "display_format": '%Y-%m-%dT%H:%M:%S.%f%z'}, - } - form_overrides = { "start_ts": dateutil_fields.DateTimeField, } + form_overrides = { "start_ts": StartTSField, } form_widget_args = { 'categories_json': { 'rows': 10,