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.
46 lines
1.4 KiB
46 lines
1.4 KiB
# -*- coding: utf-8 -*-
|
|
import json
|
|
from django.http import HttpResponse
|
|
from django.shortcuts import redirect, get_object_or_404
|
|
from .models import Banner, BannerGroup
|
|
|
|
|
|
def click(request, banner_id, key):
|
|
banner = get_object_or_404(Banner, pk=banner_id)
|
|
banner.log(request, 2, key)
|
|
return redirect(banner.url)
|
|
|
|
|
|
def view(request, banner_id, key):
|
|
banner = get_object_or_404(Banner, pk=banner_id)
|
|
banner.log(request, 1, key)
|
|
return redirect(banner.img.url)
|
|
|
|
|
|
def get_client_ip(request):
|
|
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
|
|
if x_forwarded_for:
|
|
ip = x_forwarded_for.split(',')[0]
|
|
else:
|
|
ip = request.META.get('REMOTE_ADDR')
|
|
return ip
|
|
|
|
def get_banners(request):
|
|
url = request.GET.get('url', '/')
|
|
theme = request.GET.get('theme')
|
|
country = request.GET.get('country')
|
|
city = request.GET.get('city')
|
|
tag = request.GET.get('tag')
|
|
ip = get_client_ip(request)
|
|
params = {'url': url,
|
|
'theme': theme,
|
|
'tag': tag,
|
|
'country': country,
|
|
'city': city,
|
|
'ip': ip}
|
|
b = Banner.objects.get(id=1)
|
|
result = [{'url': b.url, 'id': 'expo_b_%d'%b.id, 'is_html': b.html,
|
|
'is_flash': b.flash, 'is_img': True, 'html': b.text, 'img': b.img.url}]
|
|
return HttpResponse(json.dumps(result, indent=4), content_type='application/json')
|
|
|
|
|
|
|