# -*- 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 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 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): banners_themes = [24, 34, 4] banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765, 766, 857, 927, 964, 971, 972, 987, 1009, 1010, 1021, 2508, 2509, 2516, 2518, 2536, 2568, 2583, 2585, 3811, 3940, 4130, 4192, 4236, 4512, 4841, 5353, 5532, 5854, 106, 107, 195, 380, 930, 931, 932, 3845, 3846, 3863, 3873, 4141, 4142, 4343, 4344, 4347, 211, 212, 277, 631] cont = {'theme_search_form': ThemeSearch(), 'expo_catalog': Exposition.catalog, 'book_aid': settings.BOOKING_AID, 'blogs': Article.objects.main_page_blogs(), 'news_list': Article.objects.main_page_news(), 'sng_countries': settings.SNG_COUNTRIES, 'banner_themes': banners_themes, 'banner_tags': banner_tags, 'seo_text': add_seo(request) } 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 = settings.CACHE_RANGE 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) # update main_page counter for event in events: event.main.link.log(self.request, 1) exposition_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.exposition)[:6] conference_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.conference)[:6] args = {'events': events, 'exposition_themes': exposition_themes, 'conference_themes': conference_themes, 'search_form': ExpositionSearchForm, 'search_action': '/expo/search/'} context.update(args) return context class AdvertisingView(TemplateView): template_name = 'simple_pages/advertising.html' class AboutView(TemplateView): template_name = 'simple_pages/about.html'