Day rule and accompanying tests
Signed-off-by: Jasper Berghoef <jasper.berghoef@gmail.com>
This commit is contained in:
34
src/personalisation/migrations/0007_dayrule.py
Normal file
34
src/personalisation/migrations/0007_dayrule.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.5 on 2017-01-10 14:35
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('personalisation', '0006_segment_match_any'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DayRule',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('mon', models.BooleanField(default=False, verbose_name='Monday')),
|
||||
('tue', models.BooleanField(default=False, verbose_name='Tuesday')),
|
||||
('wed', models.BooleanField(default=False, verbose_name='Wednesday')),
|
||||
('thu', models.BooleanField(default=False, verbose_name='Thursday')),
|
||||
('fri', models.BooleanField(default=False, verbose_name='Friday')),
|
||||
('sat', models.BooleanField(default=False, verbose_name='Saturday')),
|
||||
('sun', models.BooleanField(default=False, verbose_name='Sunday')),
|
||||
('segment', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='personalisation_dayrule_related', related_query_name='personalisation_dayrules', to='personalisation.Segment')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
@@ -67,6 +67,54 @@ class TimeRule(AbstractBaseRule):
|
||||
return _('Time Rule')
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class DayRule(AbstractBaseRule):
|
||||
"""Day rule to segment users based on day(s) of visit"""
|
||||
mon = models.BooleanField(_("Monday"), default=False)
|
||||
tue = models.BooleanField(_("Tuesday"), default=False)
|
||||
wed = models.BooleanField(_("Wednesday"), default=False)
|
||||
thu = models.BooleanField(_("Thursday"), default=False)
|
||||
fri = models.BooleanField(_("Friday"), default=False)
|
||||
sat = models.BooleanField(_("Saturday"), default=False)
|
||||
sun = models.BooleanField(_("Sunday"), default=False)
|
||||
|
||||
panels = [
|
||||
FieldPanel('mon'),
|
||||
FieldPanel('tue'),
|
||||
FieldPanel('wed'),
|
||||
FieldPanel('thu'),
|
||||
FieldPanel('fri'),
|
||||
FieldPanel('sat'),
|
||||
FieldPanel('sun'),
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DayRule, self).__init__(*args, **kwargs)
|
||||
|
||||
def test_user(self, request=None):
|
||||
current_day = datetime.today().weekday()
|
||||
|
||||
if current_day == 0:
|
||||
return self.mon
|
||||
elif current_day == 1:
|
||||
return self.tue
|
||||
elif current_day == 2:
|
||||
return self.wed
|
||||
elif current_day == 3:
|
||||
return self.thu
|
||||
elif current_day == 4:
|
||||
return self.fri
|
||||
elif current_day == 5:
|
||||
return self.sat
|
||||
elif current_day == 6:
|
||||
return self.sun
|
||||
else:
|
||||
return False
|
||||
|
||||
def __str__(self):
|
||||
return _('Day Rule')
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class ReferralRule(AbstractBaseRule):
|
||||
"""Referral rule to segment users based on a regex test"""
|
||||
|
Reference in New Issue
Block a user