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

# -*- 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')