# -*- coding: utf-8 -*- from django import forms from models import Setting, settings_dict from django.conf import settings from functions.translate import fill_trans_fields, populate, ZERO_LANGUAGE, populate_all, fill_trans_fields_all class SettingsForm(forms.Form): """ Create Settings form for creating settings __init__ uses for dynamic creates fields save function saves data in Settings object. If it doesnt exist create new object """ def __init__(self, *args, **kwargs): super(SettingsForm, self).__init__(*args, **kwargs) # creates translated form fields, example: name_ru, name_en # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs for model_name in settings_dict.values(): for setting in model_name: item = Setting.objects.get(key=setting['key']) if setting['type'] != 'transl': self.fields[setting['key']] = forms.CharField(label=setting['verbose_name'], initial=item.get_value(), required=False) else: if len(settings.LANGUAGES) in range(10): for lid, (code, name) in enumerate(settings.LANGUAGES): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False self.fields['%s_%s' %(setting['key'], code)] = forms.CharField(label=setting['verbose_name'], initial=item.get_value(code), required=required, widget=forms.TextInput( attrs={'style':'width: 450px'})) """ settings_list = Setting.objects.all() for item in settings_list: if item.type != 'transl': self.fields['%s'%item.key] = forms.CharField(label='%s'%item.key, initial=item.get_value(), required=False) else: if len(settings.LANGUAGES) in range(10): for lid, (code, name) in enumerate(settings.LANGUAGES): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False self.fields['%s_%s' %(item.key, code)] = forms.CharField(label=getattr(item, 'key'), initial=item.get_value(code), required=required, widget=forms.TextInput( attrs={'style':'width: 450px'})) """ def save(self): """ changes Settings model """ data = self.cleaned_data capacity_tmpl = Setting.objects.get(key='hall_template') for code, name in settings.LANGUAGES: capacity_tmpl.set_value(data['hall_capacity_tmpl_%s'%code], code)