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 %}
- {% blocktrans count useage_count=usage_object.used_by.count %}Used {{ useage_count }} time{% plural %}Used {{ useage_count }} times{% endblocktrans %} + {% blocktrans count useage_count=usage_object.get_usage.count %}Used {{ useage_count }} time{% plural %}Used {{ useage_count }} times{% endblocktrans %}
{% 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)