8

Day rule and accompanying tests

Signed-off-by: Jasper Berghoef <jasper.berghoef@gmail.com>
This commit is contained in:
Jasper Berghoef
2017-01-10 15:36:25 +01:00
parent 9b90551e3b
commit a7b477d71f
6 changed files with 122 additions and 5 deletions

View 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,
},
),
]

View File

@@ -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"""