wagtail/wagtail/wagtailadmin/utils.py

37 lines
970 B
Python

from wagtail.wagtailcore.models import Page
from django.conf import settings
def used_by(self):
"""Returns the pages that an object was used in."""
if not hasattr(settings, 'USAGE_COUNT') or not settings.USAGE_COUNT:
return []
related_objects = []
result = []
relations = self._meta.get_all_related_objects(
include_hidden=True,
include_proxy_eq=True
)
for relation in relations:
related_objects.extend(list(relation.model._base_manager.filter(
**{relation.field.name: self.id}
)))
for r in related_objects:
if isinstance(r, Page):
result.append(r)
elif hasattr(r, 'page'):
result.append(r.page)
return result
def usage_count(self):
"""Returns the number of times that an obect has been used in a page"""
if not hasattr(settings, 'USAGE_COUNT') or not settings.USAGE_COUNT:
return None
return len(used_by(self))