def _init_option(optionset_label, name, siteoption): db_option, created = AppOption.objects.get_or_create(name = name, optionset_label = optionset_label) if siteoption.lang_dependant: ret = {} for l in get_supported_languages(): ret[l] = '' db_option.value = json.dumps(ret) else: ret = '' db_option.value = ret if db_option.lang_dependant != siteoption.lang_dependant: db_option.lang_dependant = siteoption.lang_dependant if created: db_option.save() return ret
def __init__(self, **kwargs): self.form = forms.Form(**kwargs) # load option values from the database self.value_dict = get_options(optionset_label=self.optionset_label, current_only=False) self.formfields = [] self.langformfields = {} for (attr, value) in self.option_fields: if not attr in self.value_dict or self.value_dict[attr] is None: self.value_dict[attr] = _init_option(self.optionset_label, attr, value) if value.lang_dependant: for lang in get_supported_languages(): # generate the form field field_name = '%s_%s' % (attr, lang) lang_field = copy.deepcopy(value.field) lang_field.label = '%s (%s)' % (force_text( lang_field.label), lang.upper()) self.form.fields[field_name] = lang_field try: self.form.fields[field_name].initial = self.value_dict[ attr][lang] except KeyError: self.form.fields[field_name].initial = '' # add to land dependant options self.lang_options[field_name] = (attr, lang) # langformfields fieldset if not lang in self.langformfields: self.langformfields[lang] = [] self.langformfields[lang].append(self.form[field_name]) else: self.form.fields[attr] = value.field self.form.fields[attr].initial = self.value_dict[attr] self.formfields.append(self.form[attr])
def __init__(self, **kwargs): self.form = forms.Form(**kwargs) #load option values from the database self.value_dict = get_options(optionset_label = self.optionset_label, current_only=False) self.formfields = [] self.langformfields = {} for (attr, value) in self.option_fields: if not attr in self.value_dict or self.value_dict[attr] is None: self.value_dict[attr] = _init_option(self.optionset_label, attr, value) if value.lang_dependant: for lang in get_supported_languages(): #generate the form field field_name = '%s_%s' % (attr, lang) lang_field = copy.deepcopy(value.field) lang_field.label = '%s (%s)' % (force_text(lang_field.label), lang.upper()) self.form.fields[field_name] = lang_field try: self.form.fields[field_name].initial = self.value_dict[attr][lang] except KeyError: self.form.fields[field_name].initial = '' #add to land dependant options self.lang_options[field_name] = (attr, lang) #langformfields fieldset if not lang in self.langformfields: self.langformfields[lang] = [] self.langformfields[lang].append(self.form[field_name]) else: self.form.fields[attr] = value.field self.form.fields[attr].initial = self.value_dict[attr] self.formfields.append(self.form[attr])