mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-11 16:53:10 +00:00
37 lines
970 B
Python
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))
|