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 self.get_response = get_response
def __call__(self, request): 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: if 'segments' not in request.session:
request.session['segments'] = [] request.session['segments'] = []
request.session['visit_count'] = 1
segments = Segment.objects.all().filter(status='enabled') segments = Segment.objects.all().filter(status='enabled')
@ -26,9 +30,6 @@ class SegmentMiddleware(object):
response = self.get_response(request) response = self.get_response(request)
if not request.session.get('segments'):
request.session['segments'] = []
print(request.session['segments']) print(request.session['segments'])
return response return response
@ -44,5 +45,10 @@ class SegmentMiddleware(object):
return False return False
def add_segment_to_user(self, segment, request): 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']: if segment not in request.session['segments']:
request.session['segments'].append(segment.encoded_name()) request.session['segments'].append(segment.encoded_name())

View File

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

View File

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