# -*- 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) from exposition.models import Exposition from conference.models import Conference from seminar.models import Seminar from webinar.models import Webinar from photoreport.models import Photoreport from news.models import News from theme.models import Theme from article.models import Article import datetime class MainPageEvent(forms.Form): def __init__(self, *args, **kwargs): super(MainPageEvent, self).__init__(*args, **kwargs) now = datetime.datetime.now self.fields['expositions' ] = forms.ModelMultipleChoiceField( queryset=Exposition.objects.all(), required=False ) self.fields['conferences' ] = forms.ModelMultipleChoiceField( queryset=Conference.objects.all(), required=False ) self.fields['seminars' ] = forms.ModelMultipleChoiceField( queryset=Seminar.objects.all(), required=False ) self.fields['webinars' ] = forms.ModelMultipleChoiceField( queryset=Webinar.objects.all(), required=False ) def save(self): data = self.cleaned_data expositions = data['expositions'] conferences = data['conferences'] seminars = data['seminars'] webinars = data['webinars'] Exposition.objects.all().update(main_page=0) expositions.update(main_page=1) Conference.objects.all().update(main_page=0) conferences.update(main_page=1) Seminar.objects.all().update(main_page=0) seminars.update(main_page=1) Webinar.objects.all().update(main_page=0) webinars.update(main_page=1) class MainPageThemes(forms.Form): exposition_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.exposition), required=False) conference_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.conference), required=False) seminar_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.seminar), required=False) def save(self): data = self.cleaned_data exposition_themes = data['exposition_themes'] conference_themes = data['conference_themes'] seminar_themes = data['seminar_themes'] Theme.objects.filter(types=Theme.types.exposition).update(main_page=0) Theme.objects.filter(types=Theme.types.conference).update(main_page=0) Theme.objects.filter(types=Theme.types.seminar).update(main_page=0) exposition_themes.update(main_page=1) conference_themes.update(main_page=1) seminar_themes.update(main_page=1) class MainPagePhotoreport(forms.Form): photoreports = forms.ModelMultipleChoiceField(queryset=Photoreport.objects.all()) def save(self): data = self.cleaned_data photoreports = data['photoreports'] photoreports.update(main_page=1) class MainPageNews(forms.Form): main_page_news = forms.CharField(label=u'Новости', widget=forms.HiddenInput(), required=False,) def save(self): data = self.cleaned_data news = data['main_page_news'] Article.objects.news().exclude(id__in=[item.id for item in news]).update(main_page=0) news.update(main_page=1) def clean_main_page_news(self): news = self.cleaned_data['main_page_news'] if news: news = news.split(',') qs = Article.objects.news().filter(id__in=news) else: qs = Article.objects.none() return qs class MainPageArticle(forms.Form): article = forms.ModelMultipleChoiceField(queryset=Article.objects.blogs(), required=False, widget=forms.SelectMultiple(attrs={'style': 'width: 100%;'})) def save(self): data = self.cleaned_data articles = data['article'] Article.objects.blogs().exclude(id__in=[item.id for item in articles]).update(main_page=0) articles.update(main_page=1)