7

adds checking for admin urls 👌

This commit is contained in:
Boris Besemer
2016-12-05 15:29:16 +01:00
parent 7071198964
commit a5f72aa349
5 changed files with 42 additions and 12 deletions

View File

@ -16,10 +16,7 @@ class SegmentMiddleware(object):
self.get_response = get_response
def __call__(self, request):
django_admin = reverse('admin:index')
if request.path.startswith('/admin/') or request.path.startswith('/django-admin/'):
return self.get_response(request)
reverse_urls = [reverse('admin:index'), reverse('wagtailadmin_home')]
if 'visit_count' not in request.session:
request.session['visit_count'] = []
@ -27,6 +24,9 @@ class SegmentMiddleware(object):
if 'segments' not in request.session:
request.session['segments'] = []
if any(request.path.startswith(item) for item in reverse_urls):
return self.get_response(request)
segments = Segment.objects.all().filter(status='enabled')
for segment in segments:

View File

@ -101,7 +101,7 @@ class VisitCountRule(AbstractBaseRule):
('less_than', _("Less than")),
('equal_to', _("Equal to")),
)
operator = models.CharField(max_length=20, choices=OPERATOR_CHOICES, default="ht")
operator = models.CharField(max_length=20, choices=OPERATOR_CHOICES, default="more_than")
count = models.PositiveSmallIntegerField(default=0, null=True)
counted_page = models.ForeignKey(
'wagtailcore.Page',

View File

@ -93,10 +93,12 @@ def serve_variation(page, request, serve_args, serve_kwargs):
def _check_for_variations(segments, page):
for segment in segments:
page_class = page.__class__
if not any(item == PersonalisablePage for item in page_class.__bases__):
page_class = PersonalisablePage
variation = page_class.objects.filter(canonical_page=page, segment=segment)
if variation:
return variation
return None

View File

@ -12,11 +12,6 @@ class SegmentFactory(factory.DjangoModelFactory):
class Meta:
model = models.Segment
@factory.post_generation
def create_rules(self, create, extracted, **kwargs):
if not create:
return
class TimeRuleFactory(factory.DjangoModelFactory):
start_time = datetime.time(8,0,0)
@ -30,3 +25,10 @@ class ReferralRuleFactory(factory.DjangoModelFactory):
class Meta:
model = models.ReferralRule
class VisitCountRuleFactory(factory.DjangoModelFactory):
operator = "more_than"
count = 0
class Meta:
model = models.VisitCountRule

View File

@ -3,9 +3,10 @@ import datetime
import pytest
from django.test.client import Client
from freezegun import freeze_time
from wagtail.wagtailcore.models import Page
from tests.factories.segment import (
ReferralRuleFactory, SegmentFactory, TimeRuleFactory)
ReferralRuleFactory, SegmentFactory, TimeRuleFactory, VisitCountRuleFactory)
from tests.factories.site import SiteFactory
@ -121,6 +122,21 @@ class TestUserSegmenting(object):
second_segment_referral_rule = ReferralRuleFactory
def test_visit_count_rule(self, client):
segment = SegmentFactory(name='Visit Count')
visit_count_rule = VisitCountRuleFactory(
counted_page=Page.objects.filter(slug="root").first(),
segment=segment
)
client.get("/root")
import pdb
pdb.set_trace()
assert any(item['encoded_name'] == 'visit-count' for item in client.session['segments'])
@pytest.mark.django_db
class TestUserVisitCount(object):
@ -141,3 +157,13 @@ class TestUserVisitCount(object):
assert not any(item['path'] == '/doesntexist' for item in client.session['visit_count'])
def test_ignores_admin_visits(self, client):
client.get('/admin/')
assert not any(item['path'] == '/admin/' for item in client.session['visit_count'])
client.get('/django-admin/')
assert not any(item['path'] == '/django-admin/' for item in client.session['visit_count'])
assert client.session['visit_count'] == []