7

Small fixes to Visit count, prevent middleware functionality on admin

This commit is contained in:
Jasper Berghoef
2016-11-09 17:05:58 +01:00
parent 42a8c93a60
commit f0aeead152
3 changed files with 18 additions and 13 deletions

View File

@ -8,8 +8,12 @@ class SegmentMiddleware(object):
self.get_response = get_response
def __call__(self, request):
if request.path.startswith('/admin/') or request.path.startswith('/django-admin/'):
return self.get_response(request)
if 'segments' not in request.session:
request.session['segments'] = []
request.session['visit_count'] = 1
segments = Segment.objects.all().filter(status='enabled')
@ -26,9 +30,6 @@ class SegmentMiddleware(object):
response = self.get_response(request)
if not request.session.get('segments'):
request.session['segments'] = []
print(request.session['segments'])
return response
@ -44,5 +45,10 @@ class SegmentMiddleware(object):
return False
def add_segment_to_user(self, segment, request):
"""Register the request to the Segment model as visit
and save the segment in the user session"""
segment.visit_count = segment.visit_count + 1
segment.save()
if segment not in request.session['segments']:
request.session['segments'].append(segment.encoded_name())

View File

@ -130,13 +130,13 @@ class VisitCountRule(AbstractBaseRule):
segment_count = self.count
visit_count = request.session.get('visit_count')
if operator is "more_than":
if operator == "more_than":
if visit_count > segment_count:
return True
elif operator is "less_than":
elif operator == "less_than":
if visit_count < segment_count:
return True
elif operator is "equal_to":
elif operator == "equal_to":
if visit_count == segment_count:
return True
return False

View File

@ -34,11 +34,10 @@ modeladmin_register(SegmentModelAdmin)
@hooks.register('before_serve_page')
def set_visit_count(page, request, serve_args, serve_kwargs):
"""Update the users visit count before each page visit."""
if request.session.get('visit_count'):
request.session['visit_count'] = request.session.get('visit_count') + 1
else:
if 'visit_count' not in request.session:
request.session['visit_count'] = 1
print("User {} visited {} times.".format(
else:
print("User {} visited {} time(s).".format(
request.session.session_key,
request.session['visit_count']))
request.session['visit_count'] = request.session.get('visit_count') + 1