diff --git a/src/wagtail_personalisation/models.py b/src/wagtail_personalisation/models.py index 9fe600c..f69581b 100644 --- a/src/wagtail_personalisation/models.py +++ b/src/wagtail_personalisation/models.py @@ -1,4 +1,5 @@ from __future__ import absolute_import, unicode_literals +import itertools from django.db import models, transaction from django.template.defaultfilters import slugify @@ -80,11 +81,10 @@ class Segment(ClusterableModel): def get_rules(self): """Retrieve all rules in the segment.""" - segment_rules = [] - for rule_model in AbstractBaseRule.get_descendant_models(): - segment_rules.extend( - rule_model._default_manager.filter(segment=self)) - return segment_rules + related_rules = [rule.objects.filter(segment=self) + for rule in AbstractBaseRule.__subclasses__()] + + return list(itertools.chain(*related_rules)) def toggle(self, save=True): self.status = ( diff --git a/src/wagtail_personalisation/views.py b/src/wagtail_personalisation/views.py index 22cff43..7b2289f 100644 --- a/src/wagtail_personalisation/views.py +++ b/src/wagtail_personalisation/views.py @@ -39,7 +39,7 @@ class SegmentModelAdmin(ModelAdmin): dashboard_view_class = SegmentModelDashboardView menu_icon = 'fa-snowflake-o' add_to_settings_menu = False - list_display = ('name', 'visits', 'active_days', 'status') + list_display = ('name', 'persistent', 'match_any', 'status', 'statistics') index_view_extra_js = ['js/commons.js', 'js/index.js'] index_view_extra_css = ['css/index.css'] form_view_extra_js = ['js/commons.js', 'js/form.js'] @@ -55,11 +55,9 @@ class SegmentModelAdmin(ModelAdmin): return view_class.as_view(**kwargs)(request) - def visits(self, obj): - return _("{visits} visits").format(visits=obj.visit_count) - - def active_days(self, obj): - return _("{days} days").format(days=obj.get_active_days()) + def statistics(self, obj): + return _("{visits} visits in {days} days").format( + visits=obj.visit_count, days=obj.get_active_days()) def toggle_segment_view(request):