Allow individual App Settings to not be required; allow null

hopefully this does the right thing also, not saving null to the db when that
isn't needed etc.
This commit is contained in:
Lance Edgar 2018-10-23 10:25:57 -05:00
parent f1eba6a404
commit b9da7e1b12

View file

@ -140,6 +140,10 @@ class AppSettingsView(View):
'name': setting.node_name,
'default': self.get_setting_value(setting),
}
if kwargs['default'] is None:
kwargs['default'] = colander.null
if not setting.required:
kwargs['missing'] = colander.null
if setting.choices:
kwargs['validator'] = colander.OneOf(setting.choices)
kwargs['widget'] = forms.widgets.JQuerySelectWidget(
@ -151,11 +155,15 @@ class AppSettingsView(View):
def get_node_type(self, setting):
if setting.data_type is bool:
return colander.Bool()
elif setting.data_type is int:
return colander.Integer()
return colander.String()
def save_form(self, form):
for setting in self.iter_known_settings():
value = form.validated[setting.node_name]
if value is colander.null:
value = None
self.save_setting_value(setting, value)
def iter_known_settings(self):