route options UI

This commit is contained in:
Laura Klünder 2017-12-16 19:33:13 +01:00
parent 08e695a057
commit d2e9a57343
7 changed files with 145 additions and 28 deletions

View file

@ -116,14 +116,14 @@ class RouteOptions(models.Model):
except AttributeError:
return self.get_fields()[key].initial
def update(self, value_dict, ignore_errors=False):
def update(self, value_dict, ignore_errors=False, ignore_unknown=False):
if not value_dict:
return
fields = self.get_fields()
for key, value in value_dict.items():
field = fields.get(key)
if not field:
if ignore_errors:
if ignore_errors or ignore_unknown:
continue
raise ValidationError(_('Unknown route option: %s') % key)
if value is None or value not in dict(field.choices):
@ -135,6 +135,24 @@ class RouteOptions(models.Model):
def __setitem__(self, key, value):
self.update({key: value})
def serialize(self):
return [
{
'name': name,
'type': field.widget.input_type,
'label': field.label,
'choices': [
{
'name': choice_name,
'title': choice_title,
}
for choice_name, choice_title in field.choices
],
'value': self[name],
}
for name, field in self.get_fields().items()
]
def save(self, *args, **kwargs):
if self.request is None or self.request.user.is_authenticated:
self.user = self.request.user