# -*- coding: utf-8 -*- import json import re from django.http import HttpResponse from django.shortcuts import redirect, get_object_or_404 from django.shortcuts import render_to_response from django.template import RequestContext from .models import Banner, BannerGroup, URL, Top from expobanner.utils import get_by_sort, get_banner_by_params, get_client_ip, get_top_events def click(request, banner_id): banner = get_object_or_404(Banner, pk=banner_id) banner.log(request, 2) return redirect(banner.url) def view(request, banner_id): banner = get_object_or_404(Banner, pk=banner_id) banner.log(request, 1) return redirect(banner.img.url) def get_banners(request): #url = request.GET.get('url', '/') url = request.META.get('HTTP_REFERER', '/') # get urls by current url urls = URL.cached.all() good_urls = [] for u in urls: if u.regex: url_re = re.compile(u.url) if url_re.findall(url): good_urls.append(u) elif url == u.url: good_urls.append(u) # fill parameters dict params = {'theme': request.GET.getlist('theme', []), 'tag': request.GET.get('tag'), 'country': request.GET.get('country'), 'city': request.GET.get('city'), 'ip': get_client_ip(request)} group_banners = BannerGroup.cached.group_banners() result = [] # get banners for all groups for group, banners in group_banners.iteritems(): banner = get_banner_by_params(banners, good_urls, params) if banner: if banner.js or banner.html: text = banner.text img = '' alt = '' is_img = False else: text = '' img = banner.img.url alt = banner.alt is_img = True result.append({'id': group, 'url': banner.get_click_link(), 'is_html': banner.html, 'is_flash': banner.flash, 'is_img': is_img, 'is_js': banner.js, 'img': img, 'alt': alt, 'text': text }) # add view log banner.log(request, 1) return HttpResponse(json.dumps(result, indent=4), content_type='application/json') def get_top(request): params = {'theme': request.GET.getlist('theme', []), 'tag': request.GET.get('tag'), 'country': request.GET.get('country'), 'city': request.GET.get('city'), 'catalog': request.GET.get('catalog')} tops = Top.cached.all() events = get_top_events(tops, params) context = {'objects': events} return render_to_response('client/includes/exposition/expo_top.html', context, context_instance=RequestContext(request))