Various renames, API changes, etc

pull/540/head
Karl Hobley 2014-07-31 11:03:19 +01:00
rodzic 7fa86fe608
commit b02c26ef77
11 zmienionych plików z 40 dodań i 42 usunięć

Wyświetl plik

@ -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 %}

Wyświetl plik

@ -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)
)

Wyświetl plik

@ -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):

Wyświetl plik

@ -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):

Wyświetl plik

@ -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)

Wyświetl plik

@ -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):

Wyświetl plik

@ -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):

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)