From d023614d7f92b9064dc855d4a4a797af5e4449c5 Mon Sep 17 00:00:00 2001 From: Tom Talbot Date: Fri, 11 Jul 2014 11:14:43 +0100 Subject: [PATCH] Alter wagtailadmin.utils.used_by() wagtailadmin.utils.used_by() no longer assumes that model relationships to pages are named 'page'. Instead it assumes that all ParentalKey relationships are relationships to pages. --- wagtail/wagtailadmin/utils.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/wagtail/wagtailadmin/utils.py b/wagtail/wagtailadmin/utils.py index 45d7c3512..515687c86 100644 --- a/wagtail/wagtailadmin/utils.py +++ b/wagtail/wagtailadmin/utils.py @@ -1,6 +1,9 @@ -from wagtail.wagtailcore.models import Page from django.conf import settings +from modelcluster.fields import ParentalKey + +from wagtail.wagtailcore.models import Page + def used_by(self): """Returns the pages that an object was used in.""" @@ -22,8 +25,10 @@ def used_by(self): for r in related_objects: if isinstance(r, Page): result.append(r) - elif hasattr(r, 'page'): - result.append(r.page) + else: + parental_keys = get_parental_keys(r) + for parental_key in parental_keys: + result.append(getattr(r, parental_key.name)) return result @@ -35,3 +40,7 @@ def usage_count(self): return None return len(used_by(self)) + + +def get_parental_keys(obj): + return [field for field in obj._meta.fields if type(field) == ParentalKey]