# -*- coding: utf-8 -*- import json import re from django.http import HttpResponse from django.shortcuts import redirect, get_object_or_404 from .models import Banner, BannerGroup, URL, Top from expobanner.utils import get_by_sort, get_banner_by_params, get_client_ip 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.get('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_events(tops, params): catalog = params.get('catalog') country = params.get('country', '') theme = params.get('theme', []) good_tops = [] for top in tops: if top.catalog != catalog: continue country_ids = [str(item.id) for item in top.country.all()] if not country in country_ids: continue from exposition.models import Exposition from django.shortcuts import render_to_response from django.template import RequestContext def get_top(request): params = {'theme': request.GET.get('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) expos = Exposition.objects.filter(top__isnull=False) context = {'objects': expos} return render_to_response('client/includes/exposition/expo_top.html', context, context_instance=RequestContext(request))