From 62d258fd9e5823e18ed89bb24985cafc9e7adaad Mon Sep 17 00:00:00 2001 From: Paul J Stevens Date: Sat, 17 Mar 2018 11:26:56 +0100 Subject: [PATCH] fixes wagtail2 compatibility return QuerySets instead of lists --- src/wagtail_personalisation/models.py | 8 ++------ src/wagtail_personalisation/utils.py | 12 ++++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/wagtail_personalisation/models.py b/src/wagtail_personalisation/models.py index e6e87d8..64dfe61 100644 --- a/src/wagtail_personalisation/models.py +++ b/src/wagtail_personalisation/models.py @@ -80,15 +80,11 @@ class Segment(ClusterableModel): def get_used_pages(self): """Return the pages that have variants using this segment.""" - pages = list(PersonalisablePageMetadata.objects.filter(segment=self)) - - return pages + return PersonalisablePageMetadata.objects.filter(segment=self) def get_created_variants(self): """Return the variants using this segment.""" - pages = Page.objects.filter(_personalisable_page_metadata__segment=self) - - return pages + return Page.objects.filter(_personalisable_page_metadata__segment=self) def get_rules(self): """Retrieve all rules in the segment.""" diff --git a/src/wagtail_personalisation/utils.py b/src/wagtail_personalisation/utils.py index b261791..6646027 100644 --- a/src/wagtail_personalisation/utils.py +++ b/src/wagtail_personalisation/utils.py @@ -1,5 +1,6 @@ import time +from django.db.models import F from django.template.base import FilterExpression, kwarg_re from django.utils import timezone @@ -103,9 +104,8 @@ def exclude_variants(pages): :return: List of pages that aren't variants :rtype: list """ - return [page for page in pages - if (hasattr(page, 'personalisation_metadata') is False) - or (hasattr(page, 'personalisation_metadata') - and page.personalisation_metadata is None) - or (hasattr(page, 'personalisation_metadata') - and page.personalisation_metadata.is_canonical)] + return ( + pages.filter( + personalisable_canonical_metadata__canonical_page_id=F( + 'personalisable_canonical_metadata__variant__id')) + )