7

fixes match any testing

This commit is contained in:
Boris Besemer
2017-01-10 12:52:10 +01:00
parent cf946f2bee
commit b7ca6541f4
3 changed files with 10 additions and 9 deletions

View File

@ -24,15 +24,18 @@ class BaseSegmentsAdapter(object):
def check_segment_exists(self): def check_segment_exists(self):
return None return None
def _test_rules(self, rules, request): def _test_rules(self, rules, request, match_any=False):
if len(rules) > 0: if len(rules) > 0:
for rule in rules: for rule in rules:
result = rule.test_user(request) 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 False
if not match_any:
return True return True
return False return False
class Meta: class Meta:
@ -81,7 +84,7 @@ class SessionSegmentsAdapter(BaseSegmentsAdapter):
segment_rules = [] segment_rules = []
for rule in rules: for rule in rules:
segment_rules += rule.objects.filter(segment=segment) segment_rules += rule.objects.filter(segment=segment)
result = self._test_rules(segment_rules, self.request) result = self._test_rules(segment_rules, self.request, match_any=segment.match_any)
if result: if result:
self.add(segment) self.add(segment)

View File

@ -336,7 +336,7 @@ class PersonalisablePage(Page):
return not self.canonical_page and self.has_variations return not self.canonical_page and self.has_variations
@cached_classmethodx @cached_classmethod
def get_edit_handler(cls): def get_edit_handler(cls):
tabs = [] tabs = []
if cls.content_panels: if cls.content_panels:

View File

@ -227,9 +227,7 @@ class TestUserSegmenting(object):
) )
client.get('/?test=test') client.get('/?test=test')
import pdb
pdb.set_trace()
assert any(item['encoded_name'] == 'match-any' for item in client.session['segments']) assert any(item['encoded_name'] == 'match-any' for item in client.session['segments'])
@pytest.mark.django_db @pytest.mark.django_db