kopia lustrzana https://github.com/wagtail/wagtail
Various renames, API changes, etc
rodzic
7fa86fe608
commit
b02c26ef77
|
@ -20,7 +20,7 @@
|
|||
{% usage_count_enabled as uc_enabled %}
|
||||
{% if uc_enabled and usage_object %}
|
||||
<div class="usagecount">
|
||||
<a href="{{ usage_object.usage_url }}">{% blocktrans count useage_count=usage_object.used_by.count %}Used {{ useage_count }} time{% plural %}Used {{ useage_count }} times{% endblocktrans %}</a>
|
||||
<a href="{{ usage_object.usage_url }}">{% blocktrans count useage_count=usage_object.get_usage.count %}Used {{ useage_count }} time{% plural %}Used {{ useage_count }} times{% endblocktrans %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if add_link %}
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue