summaryrefslogtreecommitdiffstats
path: root/askbot/deps/livesettings/forms.py
blob: 764247f3456611aa1166253b6ae3601e3fafefb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from django import forms
from askbot.deps.livesettings import ConfigurationGroup
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 = {#todo: maybe move into the make_field call
                '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