7

changed inheritance to polymorphic

This commit is contained in:
Boris Besemer
2016-11-09 11:17:28 +01:00
parent 075ea804fa
commit a4bd0ece20
5 changed files with 56 additions and 26 deletions

View File

@ -8,14 +8,17 @@ class SegmentMiddleware(object):
self.get_response = get_response
def __call__(self, request):
segments = Segment.objects.all().filter(status="enabled")
if 'segments' not in request.session:
request.session['segments'] = []
chosen_segments = []
for segment in segments:
rules = AbstractBaseRule.objects.filter(segment=segment).select_subclasses()
rules = AbstractBaseRule.objects.filter(segment=segment)
result = self.test_rules(rules, request)
print(result)
if result:
self.add_segment_to_user(segment, request)
@ -25,22 +28,20 @@ class SegmentMiddleware(object):
request.session['segments'] = []
print(request.session['segments'])
return response
def test_rules(self, rules, request):
for rule in rules:
result = rule.test_user(request)
if len(rules) > 0:
for rule in rules:
result = rule.test_user(request)
if result is False:
return False
if result is False:
return False
return True
return True
return False
def add_segment_to_user(self, segment, request):
if 'segments' not in request.session:
request.session['segments'] = []
if segment not in request.session['segments']:
request.session['segments'].append(segment.encoded_name())