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.
112 lines
4.2 KiB
112 lines
4.2 KiB
# -*- coding: utf-8 -*-
|
|
from django.shortcuts import render_to_response
|
|
from django.template import RequestContext
|
|
from django.views.generic import TemplateView
|
|
from django.conf import settings
|
|
from django.utils.translation import get_language
|
|
|
|
from functions.cache_mixin import JitterCacheMixin
|
|
from functions.forms import ThemeSearch
|
|
from functions.search_forms import ExpositionSearchForm
|
|
from functions.views_help import get_subscribers_count
|
|
|
|
from accounts.forms import RegistrationCompleteForm, SocialRegistrationCompleteForm
|
|
from meta.models import SeoText
|
|
from theme.models import Theme
|
|
from article.models import Article
|
|
from exposition.models import Exposition
|
|
from conference.models import Conference
|
|
from emencia.django.newsletter.forms import SubscribeAssideForm
|
|
|
|
|
|
from django.db.models.loading import get_model
|
|
|
|
def clear_slashes(str_):
|
|
if str_[0] == r'/':
|
|
str_ = str_[1:]
|
|
if str_[-1] == r'/':
|
|
str_ = str_[:-1]
|
|
return str_
|
|
|
|
def add_seo(request):
|
|
url = request.path
|
|
lang = get_language()
|
|
try:
|
|
seo_text = SeoText.objects.cache_get(url=url, lang=lang)
|
|
except SeoText.DoesNotExist:
|
|
try:
|
|
seo_text = SeoText.objects.cache_get(url=url[:-1], lang=lang)
|
|
except SeoText.DoesNotExist:
|
|
seo_text = None
|
|
return seo_text
|
|
|
|
def expo_context(request):
|
|
cont = {'theme_search_form': ThemeSearch(), 'expo_catalog': Exposition.catalog,
|
|
'book_aid': settings.BOOKING_AID,
|
|
'main_page_blogs': Article.objects.main_page_blogs(),
|
|
'blogs': Article.objects.every_page_blogs(),
|
|
'news_list': Article.objects.main_page_news(), 'sng_countries': settings.SNG_COUNTRIES,
|
|
'seo_text': add_seo(request), 'announce_subscribe': SubscribeAssideForm(),
|
|
'NO_EXTERNAL_JS': getattr(settings, 'NO_EXTERNAL_JS', False),
|
|
'NO_BANNERS': getattr(settings, 'NO_BANNERS', False),
|
|
'SUBSCRIBERS_COUNT': get_subscribers_count(),
|
|
}
|
|
|
|
user = request.user
|
|
if not user.is_anonymous() and not user.url:
|
|
if not user.email:
|
|
cont.update({'reg_complete': SocialRegistrationCompleteForm(instance=user)})
|
|
else:
|
|
cont.update({'reg_complete': RegistrationCompleteForm(instance=user)})
|
|
if not request.GET:
|
|
cont.update({'search_form': ExpositionSearchForm()})
|
|
return cont
|
|
|
|
|
|
def error404(request):
|
|
context = {}
|
|
expo_themes = Theme.active.expo_themes_with_count()
|
|
conf_themes = Theme.active.conference_themes_with_count()
|
|
context.update({'expo_themes': expo_themes, 'conf_themes': conf_themes})
|
|
response = render_to_response('client/404.html', context, context_instance=RequestContext(request))
|
|
response.status_code = 404
|
|
return response
|
|
|
|
|
|
class MainPageView(JitterCacheMixin, TemplateView):
|
|
cache_range = [60*3, 60*5]
|
|
template_name = 'client/index.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(MainPageView, self).get_context_data(**kwargs)
|
|
ex = Exposition.objects.expo_main()
|
|
conf = Conference.objects.conf_main()
|
|
ev = ex + conf
|
|
events = sorted(ev, key=lambda x: x.main.position)
|
|
|
|
Html = get_model('settings', 'Html')
|
|
try:
|
|
main_page_block = Html.objects.language().get(id=22)
|
|
except Html.DoesNotExist:
|
|
main_page_block = None
|
|
# update main_page counter
|
|
for event in events:
|
|
event.main.link.log(self.request, 1)
|
|
exposition_themes = Theme.objects.language().filter(main_page_expo__gt=0, types=Theme.types.exposition).order_by('main_page_expo')[:6]
|
|
conference_themes = Theme.objects.language().filter(main_page_conf__gt=0, types=Theme.types.conference).order_by('main_page_conf')[:6]
|
|
|
|
args = {'events': events, 'exposition_themes': exposition_themes, 'conference_themes': conference_themes,
|
|
'search_form': ExpositionSearchForm, 'search_action': '/expo/search/',
|
|
'main_page_block': main_page_block}
|
|
|
|
context.update(args)
|
|
|
|
return context
|
|
|
|
|
|
class AdvertisingView(TemplateView):
|
|
template_name = 'simple_pages/advertising.html'
|
|
|
|
|
|
class AboutView(TemplateView):
|
|
template_name = 'simple_pages/about.html'
|
|
|