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.
 
 
 
 
 
 

97 lines
3.3 KiB

# -*- coding: utf-8 -*-
import json
from django.shortcuts import render_to_response
from django.views.generic import FormView
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse, reverse_lazy
from django.core.context_processors import csrf
from django.conf import settings
from functions.custom_views import ContextMixin
from .forms import MainPageArticle
from .forms import MainPageNews
from .forms import MainPageThemes
from .forms import EventSectionSettingsForm
from .forms import EventDefaultDescriptionEditForm
def handle_form(request, form):
if request.POST:
f = form(request.POST)
if f.is_valid():
f.save()
return HttpResponseRedirect(reverse('settings_main_page'))
def handle_news(request):
return handle_form(request, MainPageNews)
def handle_articles(request):
return handle_form(request, MainPageArticle)
def handle_themes(request):
return handle_form(request, MainPageThemes)
from theme.models import Theme
from article.models import Article
def main_page(request):
exposition_themes = Theme.objects.filter(main_page_expo__gt=0, types=Theme.types.exposition).order_by('main_page_expo')
confrence_themes = Theme.objects.filter(main_page_conf__gt=0, types=Theme.types.conference).order_by('main_page_conf')
news = Article.objects.news().filter(main_page=1)
blogs = Article.objects.blogs().filter(main_page=1)
themes = {'exposition_themes': exposition_themes, 'conference_themes': confrence_themes}
news_form = MainPageNews(initial={'main_page_news':','.join(['%d'%item.id for item in news])})
a = [{'id': int(item.id), 'text': item.main_title} for item in news]
news_form.fields['main_page_news'].widget.attrs['data-init-text'] = json.dumps(a)
article_form = MainPageArticle(initial={'article' : blogs})
args = {'theme_form' : MainPageThemes(initial=themes),
'article_form' : article_form,
'news_form' : news_form,
'exposition_themes': list(map(str, exposition_themes.values_list('pk', flat=True))),
'confrence_themes': list(map(str, confrence_themes.values_list('pk', flat=True))),
}
args.update(csrf(request))
return render_to_response('c_admin/settings/main_page.html', args)
class EventSectionSettings(ContextMixin, FormView):
form_class = EventSectionSettingsForm
template_name = 'c_admin/settings/sections.html'
success_url = reverse_lazy('settings_sections')
def get_initial(self):
INI_CONFIG = settings.INI_CONFIG
if not INI_CONFIG.has_section('sections'):
return {}
initial = {}
for option, value in INI_CONFIG.items('sections'):
try:
initial[option] = json.loads(value)
except:
pass
return initial
def form_valid(self, form):
form.save()
return super(EventSectionSettings, self).form_valid(form)
class EventDefaultDescription(ContextMixin, FormView):
form_class = EventDefaultDescriptionEditForm
template_name = 'c_admin/settings/default_description.html'
success_url = reverse_lazy('settings_default_description')
def form_valid(self, form):
form.save()
return super(EventDefaultDescription, self).form_valid(form)