diff options
Diffstat (limited to 'forum/deps/livesettings/forms.py')
-rw-r--r-- | forum/deps/livesettings/forms.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/forum/deps/livesettings/forms.py b/forum/deps/livesettings/forms.py new file mode 100644 index 00000000..f8d40895 --- /dev/null +++ b/forum/deps/livesettings/forms.py @@ -0,0 +1,38 @@ +from django import forms +from forum.deps.livesettings import * +import logging + +log = logging.getLogger('configuration') + +class SettingsEditor(forms.Form): + "Base editor, from which customized forms are created" + + def __init__(self, *args, **kwargs): + settings = kwargs.pop('settings') + super(SettingsEditor, self).__init__(*args, **kwargs) + flattened = [] + groups = [] + for setting in settings: + if isinstance(setting, ConfigurationGroup): + for s in setting: + flattened.append(s) + else: + flattened.append(setting) + + for setting in flattened: + # Add the field to the customized field list + kw = { + 'label': setting.description, + 'help_text': setting.help_text, + # Provide current setting values for initializing the form + 'initial': setting.editor_value + } + field = setting.make_field(**kw) + + k = '%s__%s' % (setting.group.key, setting.key) + self.fields[k] = field + if not setting.group in groups: + groups.append(setting.group) + #log.debug("Added field: %s = %s" % (k, str(field))) + + self.groups = groups
\ No newline at end of file |