From 956c1bf4f5846ad86470c41df8b8364bc99ab99b Mon Sep 17 00:00:00 2001 From: aweakley Date: Fri, 25 Jan 2019 02:27:34 +1100 Subject: [PATCH] Use timezone-aware dates and times in rules (#197) * use timezone-aware dates and times re #196 * remove redundant newlines * Fix flake8 linting errors in python 3.6 --- src/wagtail_personalisation/adapters.py | 6 ++++-- src/wagtail_personalisation/rules.py | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wagtail_personalisation/adapters.py b/src/wagtail_personalisation/adapters.py index d57bf20..7de0264 100644 --- a/src/wagtail_personalisation/adapters.py +++ b/src/wagtail_personalisation/adapters.py @@ -196,8 +196,10 @@ class SessionSegmentsAdapter(BaseSegmentsAdapter): for segment in enabled_segments: if segment.is_static and segment.static_users.filter(id=self.request.user.id).exists(): additional_segments.append(segment) - elif (segment.excluded_users.filter(id=self.request.user.id).exists() or - segment in excluded_segments): + elif any(( + segment.excluded_users.filter(id=self.request.user.id).exists(), + segment in excluded_segments + )): continue elif not segment.is_static or not segment.is_full: segment_rules = [] diff --git a/src/wagtail_personalisation/rules.py b/src/wagtail_personalisation/rules.py index d4d0801..5d2259f 100644 --- a/src/wagtail_personalisation/rules.py +++ b/src/wagtail_personalisation/rules.py @@ -2,7 +2,6 @@ from __future__ import absolute_import, unicode_literals import logging import re -from datetime import datetime from importlib import import_module import pycountry @@ -13,6 +12,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.db import models from django.template.defaultfilters import slugify from django.test.client import RequestFactory +from django.utils import timezone from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ from modelcluster.fields import ParentalKey @@ -113,7 +113,7 @@ class TimeRule(AbstractBaseRule): verbose_name = _('Time Rule') def test_user(self, request=None): - return self.start_time <= datetime.now().time() <= self.end_time + return self.start_time <= timezone.now().time() <= self.end_time def description(self): return { @@ -157,7 +157,7 @@ class DayRule(AbstractBaseRule): def test_user(self, request=None): return [self.mon, self.tue, self.wed, self.thu, - self.fri, self.sat, self.sun][datetime.today().weekday()] + self.fri, self.sat, self.sun][timezone.now().date().weekday()] def description(self): days = (