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.
84 lines
3.0 KiB
84 lines
3.0 KiB
# -*- 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.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_popup': banner.popup,
|
|
'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)) |