7

adds matching functionality to referral rule

This commit is contained in:
Boris Besemer
2016-11-08 11:18:41 +01:00
parent 9956d5595a
commit 253a53433b
2 changed files with 11 additions and 6 deletions

View File

@ -14,7 +14,7 @@ class SegmentMiddleware(object):
for segment in segments:
rules = AbstractBaseRule.objects.filter(segment=segment).select_subclasses()
result = self.test_rules(rules)
result = self.test_rules(rules, request)
if result:
chosen_segments.append(segment.encoded_name())
@ -27,9 +27,9 @@ class SegmentMiddleware(object):
return response
def test_rules(self, rules):
def test_rules(self, rules, request):
for rule in rules:
result = rule.test_user()
result = rule.test_user(request)
if result is False:
return False

View File

@ -65,7 +65,7 @@ class TimeRule(AbstractBaseRule):
def __init__(self, *args, **kwargs):
super(TimeRule, self).__init__(*args, **kwargs)
def test_user(self):
def test_user(self, request):
current_time = self.get_current_time()
starting_time = self.start_time
ending_time = self.end_time
@ -87,5 +87,10 @@ class ReferralRule(AbstractBaseRule):
super(ReferralRule, self).__init__(*args, **kwargs)
def test_user(self, request):
pattern = re.compile(re.escape(r'{0}').format(self.regex_string))
return pattern.match(request.META.HTTP_REFERER)
pattern = re.compile(self.regex_string)
if 'HTTP_REFERER' in request.META:
referer = request.META['HTTP_REFERER']
if pattern.search(referer):
return True
return False