adds matching functionality to referral rule
This commit is contained in:
@ -14,7 +14,7 @@ class SegmentMiddleware(object):
|
|||||||
|
|
||||||
for segment in segments:
|
for segment in segments:
|
||||||
rules = AbstractBaseRule.objects.filter(segment=segment).select_subclasses()
|
rules = AbstractBaseRule.objects.filter(segment=segment).select_subclasses()
|
||||||
result = self.test_rules(rules)
|
result = self.test_rules(rules, request)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
chosen_segments.append(segment.encoded_name())
|
chosen_segments.append(segment.encoded_name())
|
||||||
@ -27,9 +27,9 @@ class SegmentMiddleware(object):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
def test_rules(self, rules):
|
def test_rules(self, rules, request):
|
||||||
for rule in rules:
|
for rule in rules:
|
||||||
result = rule.test_user()
|
result = rule.test_user(request)
|
||||||
|
|
||||||
if result is False:
|
if result is False:
|
||||||
return False
|
return False
|
||||||
|
@ -65,7 +65,7 @@ class TimeRule(AbstractBaseRule):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(TimeRule, self).__init__(*args, **kwargs)
|
super(TimeRule, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self, request):
|
||||||
current_time = self.get_current_time()
|
current_time = self.get_current_time()
|
||||||
starting_time = self.start_time
|
starting_time = self.start_time
|
||||||
ending_time = self.end_time
|
ending_time = self.end_time
|
||||||
@ -87,5 +87,10 @@ class ReferralRule(AbstractBaseRule):
|
|||||||
super(ReferralRule, self).__init__(*args, **kwargs)
|
super(ReferralRule, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def test_user(self, request):
|
def test_user(self, request):
|
||||||
pattern = re.compile(re.escape(r'{0}').format(self.regex_string))
|
pattern = re.compile(self.regex_string)
|
||||||
return pattern.match(request.META.HTTP_REFERER)
|
|
||||||
|
if 'HTTP_REFERER' in request.META:
|
||||||
|
referer = request.META['HTTP_REFERER']
|
||||||
|
if pattern.search(referer):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
Reference in New Issue
Block a user