diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html b/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html
index 8fa7ca19f1..fa790960df 100644
--- a/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html
+++ b/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html
@@ -20,7 +20,7 @@
{% usage_count_enabled as uc_enabled %}
{% if uc_enabled and usage_object %}
{% endif %}
{% if add_link %}
diff --git a/wagtail/wagtailadmin/utils.py b/wagtail/wagtailadmin/utils.py
index 2f3b5a2161..043b8336d7 100644
--- a/wagtail/wagtailadmin/utils.py
+++ b/wagtail/wagtailadmin/utils.py
@@ -3,33 +3,33 @@ from modelcluster.fields import ParentalKey
from wagtail.wagtailcore.models import Page
-def used_by(self):
- """Returns the pages that an object was used in."""
+def get_object_usage(obj):
+ "Returns a queryset of pages that link to a particular object"
pages = Page.objects.none()
- # get all the relation objects for self
- relations = type(self)._meta.get_all_related_objects(
+ # get all the relation objects for obj
+ relations = type(obj)._meta.get_all_related_objects(
include_hidden=True,
include_proxy_eq=True
)
for relation in relations:
- # if the relation is between self and a page, get the page
+ # if the relation is between obj and a page, get the page
if issubclass(relation.model, Page):
pages |= Page.objects.filter(
id__in=relation.model._base_manager.filter(**{
- relation.field.name: self.id
+ relation.field.name: obj.id
}).values_list('id', flat=True)
)
else:
- # if the relation is between self and an object that has a page as a
+ # if the relation is between obj and an object that has a page as a
# property, return the page
for f in relation.model._meta.fields:
if isinstance(f, ParentalKey) and issubclass(f.rel.to, Page):
pages |= Page.objects.filter(
id__in=relation.model._base_manager.filter(
**{
- relation.field.name: self.id
+ relation.field.name: obj.id
}).values_list(f.attname, flat=True)
)
diff --git a/wagtail/wagtaildocs/models.py b/wagtail/wagtaildocs/models.py
index f3201a0704..f930a493c1 100644
--- a/wagtail/wagtaildocs/models.py
+++ b/wagtail/wagtaildocs/models.py
@@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import python_2_unicode_compatible
from wagtail.wagtailadmin.taggable import TagSearchable
-from wagtail.wagtailadmin.utils import used_by
+from wagtail.wagtailadmin.utils import get_object_usage
from wagtail.wagtailsearch import indexed
@@ -48,9 +48,8 @@ class Document(models.Model, TagSearchable):
def url(self):
return reverse('wagtaildocs_serve', args=[self.id, self.filename])
- @property
- def used_by(self):
- return used_by(self)
+ def get_usage(self):
+ return get_object_usage(self)
@property
def usage_url(self):
diff --git a/wagtail/wagtaildocs/tests.py b/wagtail/wagtaildocs/tests.py
index 1fb47847e7..b2b2de87d5 100644
--- a/wagtail/wagtaildocs/tests.py
+++ b/wagtail/wagtaildocs/tests.py
@@ -329,7 +329,7 @@ class TestUsageCount(TestCase, WagtailTestUtils):
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_unused_document_usage_count(self):
doc = Document.objects.get(id=1)
- self.assertEqual(doc.used_by.count(), 0)
+ self.assertEqual(doc.get_usage().count(), 0)
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_used_document_usage_count(self):
@@ -339,7 +339,7 @@ class TestUsageCount(TestCase, WagtailTestUtils):
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
- self.assertEqual(doc.used_by.count(), 1)
+ self.assertEqual(doc.get_usage().count(), 1)
def test_usage_count_does_not_appear(self):
doc = Document.objects.get(id=1)
@@ -371,30 +371,30 @@ class TestUsageCount(TestCase, WagtailTestUtils):
self.assertContains(response, 'Used 0 times')
-class TestUsedBy(TestCase, WagtailTestUtils):
+class TestGetUsage(TestCase, WagtailTestUtils):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
self.login()
- def test_document_used_by_not_enabled(self):
+ def test_document_get_usage_not_enabled(self):
doc = Document.objects.get(id=1)
- self.assertEqual(list(doc.used_by), [])
+ self.assertEqual(list(doc.get_usage()), [])
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
- def test_unused_document_used_by(self):
+ def test_unused_document_get_usage(self):
doc = Document.objects.get(id=1)
- self.assertEqual(list(doc.used_by), [])
+ self.assertEqual(list(doc.get_usage()), [])
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
- def test_used_document_used_by(self):
+ def test_used_document_get_usage(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
- self.assertTrue(issubclass(Page, type(doc.used_by[0])))
+ self.assertTrue(issubclass(Page, type(doc.get_usage()[0])))
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_usage_page(self):
diff --git a/wagtail/wagtaildocs/views/documents.py b/wagtail/wagtaildocs/views/documents.py
index 03e968edfc..488e2ff9a2 100644
--- a/wagtail/wagtaildocs/views/documents.py
+++ b/wagtail/wagtaildocs/views/documents.py
@@ -148,7 +148,7 @@ def usage(request, document_id):
# Pagination
p = request.GET.get('p', 1)
- paginator = Paginator(doc.used_by, 20)
+ paginator = Paginator(doc.get_usage(), 20)
try:
used_by = paginator.page(p)
diff --git a/wagtail/wagtailimages/models.py b/wagtail/wagtailimages/models.py
index 3c1ee8403a..6b4bcb747b 100644
--- a/wagtail/wagtailimages/models.py
+++ b/wagtail/wagtailimages/models.py
@@ -23,7 +23,7 @@ from wagtail.wagtailadmin.taggable import TagSearchable
from wagtail.wagtailimages.backends import get_image_backend
from wagtail.wagtailsearch import indexed
from .utils import validate_image_format
-from wagtail.wagtailadmin.utils import used_by
+from wagtail.wagtailadmin.utils import get_object_usage
@python_2_unicode_compatible
@@ -51,9 +51,8 @@ class AbstractImage(models.Model, TagSearchable):
tags = TaggableManager(help_text=None, blank=True, verbose_name=_('Tags'))
- @property
- def used_by(self):
- return used_by(self)
+ def get_usage(self):
+ return get_object_usage(self)
@property
def usage_url(self):
diff --git a/wagtail/wagtailimages/tests.py b/wagtail/wagtailimages/tests.py
index 2927cc70df..371ae72bdc 100644
--- a/wagtail/wagtailimages/tests.py
+++ b/wagtail/wagtailimages/tests.py
@@ -489,7 +489,7 @@ class TestUsageCount(TestCase):
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_unused_image_usage_count(self):
- self.assertEqual(self.image.used_by.count(), 0)
+ self.assertEqual(self.image.get_usage().count(), 0)
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_used_image_document_usage_count(self):
@@ -498,10 +498,10 @@ class TestUsageCount(TestCase):
event_page_carousel_item.page = page
event_page_carousel_item.image = self.image
event_page_carousel_item.save()
- self.assertEqual(self.image.used_by.count(), 1)
+ self.assertEqual(self.image.get_usage().count(), 1)
-class TestUsedBy(TestCase):
+class TestGetUsage(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
@@ -510,21 +510,21 @@ class TestUsedBy(TestCase):
file=get_test_image_file(),
)
- def test_image_used_by_not_enabled(self):
- self.assertEqual(list(self.image.used_by), [])
+ def test_image_get_usage_not_enabled(self):
+ self.assertEqual(list(self.image.get_usage()), [])
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
- def test_unused_image_used_by(self):
- self.assertEqual(list(self.image.used_by), [])
+ def test_unused_image_get_usage(self):
+ self.assertEqual(list(self.image.get_usage()), [])
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
- def test_used_image_document_used_by(self):
+ def test_used_image_document_get_usage(self):
page = EventPage.objects.get(id=4)
event_page_carousel_item = EventPageCarouselItem()
event_page_carousel_item.page = page
event_page_carousel_item.image = self.image
event_page_carousel_item.save()
- self.assertTrue(issubclass(Page, type(self.image.used_by[0])))
+ self.assertTrue(issubclass(Page, type(self.image.get_usage()[0])))
class TestMultipleImageUploader(TestCase, WagtailTestUtils):
diff --git a/wagtail/wagtailimages/views/images.py b/wagtail/wagtailimages/views/images.py
index ab51ea8b2c..7c31c6d10b 100644
--- a/wagtail/wagtailimages/views/images.py
+++ b/wagtail/wagtailimages/views/images.py
@@ -148,7 +148,7 @@ def usage(request, image_id):
# Pagination
p = request.GET.get('p', 1)
- paginator = Paginator(image.used_by, 20)
+ paginator = Paginator(image.get_usage(), 20)
try:
used_by = paginator.page(p)
diff --git a/wagtail/wagtailsnippets/models.py b/wagtail/wagtailsnippets/models.py
index 99c01afa8a..3f1b9cad91 100644
--- a/wagtail/wagtailsnippets/models.py
+++ b/wagtail/wagtailsnippets/models.py
@@ -1,7 +1,7 @@
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
-from wagtail.wagtailadmin.utils import used_by
+from wagtail.wagtailadmin.utils import get_object_usage
SNIPPET_MODELS = []
@@ -21,7 +21,7 @@ def get_snippet_content_types():
def register_snippet(model):
if model not in SNIPPET_MODELS:
- model.used_by = used_by
+ model.get_usage = get_object_usage
model.usage_url = get_snippet_usage_url
SNIPPET_MODELS.append(model)
SNIPPET_MODELS.sort(key=lambda x: x._meta.verbose_name)
diff --git a/wagtail/wagtailsnippets/tests.py b/wagtail/wagtailsnippets/tests.py
index bf8dc64b4d..1b3431730f 100644
--- a/wagtail/wagtailsnippets/tests.py
+++ b/wagtail/wagtailsnippets/tests.py
@@ -195,7 +195,7 @@ class TestUsageCount(TestCase):
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_snippet_usage_count(self):
advert = Advert.objects.get(id=1)
- self.assertEqual(advert.used_by().count(), 1)
+ self.assertEqual(advert.get_usage().count(), 1)
class TestUsedBy(TestCase):
@@ -204,4 +204,4 @@ class TestUsedBy(TestCase):
@override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True)
def test_snippet_used_by(self):
advert = Advert.objects.get(id=1)
- self.assertEqual(type(advert.used_by()[0]), Page)
+ self.assertEqual(type(advert.get_usage()[0]), Page)
diff --git a/wagtail/wagtailsnippets/views/snippets.py b/wagtail/wagtailsnippets/views/snippets.py
index 9ab34a432b..4e146b6fa5 100644
--- a/wagtail/wagtailsnippets/views/snippets.py
+++ b/wagtail/wagtailsnippets/views/snippets.py
@@ -225,7 +225,7 @@ def usage(request, content_type_app_name, content_type_model_name, id):
# Pagination
p = request.GET.get('p', 1)
- paginator = Paginator(instance.used_by(), 20)
+ paginator = Paginator(instance.get_usage(), 20)
try:
used_by = paginator.page(p)