Test integration
parent
dd8e9bcbcf
commit
b418e3bbed
|
@ -28,6 +28,35 @@ def show_to_geo(promo, country_code):
|
|||
return True
|
||||
|
||||
|
||||
def get_promo(country_code, gold_project=False, gold_user=False):
|
||||
promo_queryset = SupporterPromo.objects.filter(live=True, display_type='doc').order_by('?')
|
||||
|
||||
for obj in promo_queryset:
|
||||
if country_code:
|
||||
if show_to_geo(obj, country_code):
|
||||
promo_obj = obj
|
||||
break
|
||||
else:
|
||||
# TODO: House Ad
|
||||
promo_obj = None
|
||||
|
||||
# Support showing a "Thank you" message for gold folks
|
||||
if gold_user:
|
||||
gold_promo = SupporterPromo.objects.filter(live=True,
|
||||
name='gold-user')
|
||||
if gold_promo.exists():
|
||||
promo_obj = gold_promo.first()
|
||||
|
||||
# Default to showing project-level thanks if it exists
|
||||
if gold_project:
|
||||
gold_promo = SupporterPromo.objects.filter(live=True,
|
||||
name='gold-project')
|
||||
if gold_promo.exists():
|
||||
promo_obj = gold_promo.first()
|
||||
|
||||
return promo_obj
|
||||
|
||||
|
||||
@receiver(footer_response)
|
||||
def attach_promo_data(sender, **kwargs):
|
||||
request = kwargs['request']
|
||||
|
@ -43,7 +72,7 @@ def attach_promo_data(sender, **kwargs):
|
|||
return
|
||||
|
||||
gold_user = gold_project = False
|
||||
promo_obj = None
|
||||
promo_obj = country_code = None
|
||||
|
||||
show_promo = project.allow_promos
|
||||
|
||||
|
@ -61,8 +90,6 @@ def attach_promo_data(sender, **kwargs):
|
|||
if gold_user or gold_project:
|
||||
show_promo = False
|
||||
|
||||
country_code = None
|
||||
|
||||
if PROMO_GEO_PATH:
|
||||
# Get geo information from the IP, but don't record it anywhere
|
||||
ip = request.META.get('REMOTE_ADDR')
|
||||
|
@ -72,30 +99,11 @@ def attach_promo_data(sender, **kwargs):
|
|||
|
||||
# Try to get a promo if we should be using one.
|
||||
if show_promo:
|
||||
promo_queryset = SupporterPromo.objects.filter(live=True, display_type='doc').order_by('?')
|
||||
|
||||
for obj in promo_queryset:
|
||||
if country_code:
|
||||
if show_to_geo(obj, country_code):
|
||||
promo_obj = obj
|
||||
break
|
||||
else:
|
||||
# TODO: House Ad
|
||||
promo_obj = None
|
||||
|
||||
# Support showing a "Thank you" message for gold folks
|
||||
if gold_user:
|
||||
gold_promo = SupporterPromo.objects.filter(live=True,
|
||||
name='gold-user')
|
||||
if gold_promo.exists():
|
||||
promo_obj = gold_promo.first()
|
||||
|
||||
# Default to showing project-level thanks if it exists
|
||||
if gold_project:
|
||||
gold_promo = SupporterPromo.objects.filter(live=True,
|
||||
name='gold-project')
|
||||
if gold_promo.exists():
|
||||
promo_obj = gold_promo.first()
|
||||
promo_obj = get_promo(
|
||||
country_code=country_code,
|
||||
gold_project=gold_project,
|
||||
gold_user=gold_user,
|
||||
)
|
||||
|
||||
# If we don't have anything to show, don't show it.
|
||||
if not promo_obj:
|
||||
|
|
|
@ -4,12 +4,12 @@ from django.test import TestCase
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.core.cache import cache
|
||||
|
||||
from django_dynamic_fixture import get, fixture
|
||||
from django_dynamic_fixture import get
|
||||
|
||||
from .models import (SupporterPromo, GeoFilter, Country,
|
||||
CLICKS, VIEWS, OFFERS,
|
||||
INCLUDE, EXCLUDE)
|
||||
from .signals import show_to_geo
|
||||
from .signals import show_to_geo, get_promo
|
||||
from readthedocs.projects.models import Project
|
||||
|
||||
|
||||
|
@ -192,6 +192,7 @@ class FilterTests(TestCase):
|
|||
self.promo = get(SupporterPromo,
|
||||
slug='promo-slug',
|
||||
link='http://example.com',
|
||||
live=True,
|
||||
image='http://media.example.com/img.png')
|
||||
self.filter = get(GeoFilter,
|
||||
promo=self.promo,
|
||||
|
@ -203,6 +204,7 @@ class FilterTests(TestCase):
|
|||
self.promo2 = get(SupporterPromo,
|
||||
slug='promo2-slug',
|
||||
link='http://example.com',
|
||||
live=True,
|
||||
image='http://media.example.com/img.png')
|
||||
self.filter2 = get(GeoFilter,
|
||||
promo=self.promo2,
|
||||
|
@ -235,3 +237,19 @@ class FilterTests(TestCase):
|
|||
|
||||
ret2 = show_to_geo(self.promo2, 'FO')
|
||||
self.assertEqual(ret2, True)
|
||||
|
||||
def test_get_promo(self):
|
||||
ret = get_promo('US')
|
||||
self.assertTrue(ret in [self.promo, self.promo2])
|
||||
|
||||
ret = get_promo('MX')
|
||||
self.assertTrue(ret in [self.promo, self.promo2])
|
||||
|
||||
ret = get_promo('FO')
|
||||
self.assertEqual(ret, self.promo2)
|
||||
|
||||
ret = get_promo('AZ')
|
||||
self.assertEqual(ret, None)
|
||||
|
||||
ret = get_promo('RANDOM')
|
||||
self.assertEqual(ret, self.promo2)
|
||||
|
|
Loading…
Reference in New Issue