7

adds match_any option to segments

This commit is contained in:
Boris Besemer
2016-12-22 14:25:00 +01:00
parent 4c0f0760b2
commit 5f8c768894
4 changed files with 49 additions and 5 deletions

View File

@ -97,7 +97,7 @@ def segment_user(page, request, serve_args, serve_kwargs):
queried_rules = rule.objects.filter(segment=segment)
for result in queried_rules:
segment_rules.append(result)
result = _test_rules(segment_rules, request)
result = _test_rules(segment_rules, request, segment.match_any)
if result:
_add_segment_to_user(segment, request)
@ -112,16 +112,19 @@ def segment_user(page, request, serve_args, serve_kwargs):
segment.save()
def _test_rules(rules, request):
def _test_rules(rules, request, match_any=False):
"""Test whether the user matches a segment's rules'"""
if len(rules) > 0:
for rule in rules:
result = rule.test_user(request)
if match_any:
if result is True:
return result
if result is False:
elif result is False:
return False
return True
if not match_any:
return True
return False