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.
207 lines
9.0 KiB
207 lines
9.0 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):
|
|
expositions = forms.CharField(label=u'Выставки', widget=forms.HiddenInput(), required=False)
|
|
conferences = forms.CharField(label=u'Конференции', widget=forms.HiddenInput(), required=False)
|
|
|
|
def save(self):
|
|
data = self.cleaned_data
|
|
expositions = data['expositions']
|
|
conferences = data['conferences']
|
|
Exposition.objects.filter(main_page=1).update(main_page=0)
|
|
Exposition.objects.filter(id__in=expositions).update(main_page=1)
|
|
#Conference.objects.filter(main_page=1).update(main_page=0)
|
|
#Conference.update(main_page=1)
|
|
|
|
|
|
def clean_expositions(self):
|
|
expositions = self.cleaned_data.get('expositions')
|
|
if expositions:
|
|
res = []
|
|
for id in expositions.split(','):
|
|
try:
|
|
res.append(int(id))
|
|
except:
|
|
continue
|
|
return res
|
|
else:
|
|
return []
|
|
|
|
"""
|
|
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) |