Moved the visit count function, saving more information (timestamp and segment id) in the segments session
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
from personalisation.models import AbstractBaseRule, Segment
|
from personalisation.models import AbstractBaseRule, Segment
|
||||||
|
import time
|
||||||
|
|
||||||
class SegmentMiddleware(object):
|
class SegmentMiddleware(object):
|
||||||
"""Middleware for testing and putting a user in a segment"""
|
"""Middleware for testing and putting a user in a segment"""
|
||||||
@@ -29,8 +29,6 @@ class SegmentMiddleware(object):
|
|||||||
self.add_segment_to_user(segment, request)
|
self.add_segment_to_user(segment, request)
|
||||||
|
|
||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
|
|
||||||
print(request.session['segments'])
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def test_rules(self, rules, request):
|
def test_rules(self, rules, request):
|
||||||
@@ -46,10 +44,19 @@ 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
|
"""Save the segment in the user session"""
|
||||||
and save the segment in the user session"""
|
def check_if_segmented(segment):
|
||||||
segment.visit_count = segment.visit_count + 1
|
"""Check if the user has been segmented"""
|
||||||
segment.save()
|
for seg in request.session['segments']:
|
||||||
|
if seg['encoded_name'] == segment.encoded_name():
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
if segment.encoded_name() not in request.session['segments']:
|
if not check_if_segmented(segment):
|
||||||
request.session['segments'].append(segment.encoded_name())
|
# Clear segments session on browser close.
|
||||||
|
segdict = {
|
||||||
|
"encoded_name": segment.encoded_name(),
|
||||||
|
"id": segment.pk,
|
||||||
|
"timestamp": int(time.time()),
|
||||||
|
}
|
||||||
|
request.session['segments'].append(segdict)
|
||||||
|
@@ -34,6 +34,11 @@ 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."""
|
||||||
|
for seg in request.session['segments']:
|
||||||
|
segment = Segment.objects.get(pk=seg['id'])
|
||||||
|
segment.visit_count = segment.visit_count + 1
|
||||||
|
segment.save()
|
||||||
|
|
||||||
if 'visit_count' not in request.session:
|
if 'visit_count' not in request.session:
|
||||||
request.session['visit_count'] = 1
|
request.session['visit_count'] = 1
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user