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.
 
 
 
 
 
 

165 lines
7.5 KiB

# -*- 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.filter(data_begin__gte=now),
required=False
)
self.fields['conferences' ] = forms.ModelMultipleChoiceField(
queryset=Conference.objects.filter(data_begin__gte=now),
required=False
)
self.fields['seminars' ] = forms.ModelMultipleChoiceField(
queryset=Seminar.objects.filter(data_begin__gte=now),
required=False
)
self.fields['webinars' ] = forms.ModelMultipleChoiceField(
queryset=Webinar.objects.filter(data_begin__gte=now),
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):
news = forms.ModelMultipleChoiceField(queryset=News.objects.all())
def save(self):
data = self.cleaned_data
news = data['news']
news.update(main_page=1)
class MainPageArticle(forms.Form):
article = forms.ModelMultipleChoiceField(queryset=Article.objects.all())
def save(self):
data = self.cleaned_data
articles = data['articles']
articles.update(main_page=1)
def save(self):
pass