now adds segments of a user to the session
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
from personalisation.models import TimeRule
|
from personalisation.models import Segment, TimeRule
|
||||||
|
|
||||||
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"""
|
||||||
@ -7,16 +7,21 @@ class SegmentMiddleware(object):
|
|||||||
self.get_response = get_response
|
self.get_response = get_response
|
||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
time_rules = TimeRule.objects.all()
|
segments = Segment.objects.all().filter(status="live")
|
||||||
|
|
||||||
|
chosen_segments = []
|
||||||
|
|
||||||
|
for segment in segments:
|
||||||
result = False
|
result = False
|
||||||
|
rules = TimeRule.objects.all().filter(segment=segment)
|
||||||
for rule in time_rules:
|
for rule in rules:
|
||||||
result = rule.test_user()
|
result = rule.test_user()
|
||||||
|
if result:
|
||||||
|
chosen_segments.append(segment.encoded_name())
|
||||||
|
|
||||||
request.session['segmented'] = result
|
request.session['segments'] = chosen_segments
|
||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
|
|
||||||
print(request.session['segmented'])
|
print(request.session['segments'])
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
20
src/personalisation/migrations/0004_segment_status.py
Normal file
20
src/personalisation/migrations/0004_segment_status.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.3 on 2016-11-07 14:34
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('personalisation', '0003_abstractrulebase_segment'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='segment',
|
||||||
|
name='status',
|
||||||
|
field=models.CharField(choices=[('disabled', 'Disabled'), ('live', 'Live'), ('completed', 'Completed')], default='disabled', max_length=20),
|
||||||
|
),
|
||||||
|
]
|
@ -17,6 +17,12 @@ Model for a new segment
|
|||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class Segment(ClusterableModel):
|
class Segment(ClusterableModel):
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
STATUS_CHOICES = (
|
||||||
|
('disabled', 'Disabled'),
|
||||||
|
('live', 'Live'),
|
||||||
|
('completed', 'Completed'),
|
||||||
|
)
|
||||||
|
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="disabled")
|
||||||
|
|
||||||
panels = [
|
panels = [
|
||||||
FieldPanel('name'),
|
FieldPanel('name'),
|
||||||
@ -25,6 +31,10 @@ class Segment(ClusterableModel):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
def encoded_name(self):
|
||||||
|
return "".join(self.name.lower().split())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Base for creating rules to segment users with
|
Base for creating rules to segment users with
|
||||||
|
Reference in New Issue
Block a user