You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.9 KiB
43 lines
1.9 KiB
# -*- coding: utf-8 -*-
|
|
from django import forms
|
|
from models import Setting
|
|
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
|
|
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) |