Add object type column to site history report

pull/7535/head
Matt Westcott 2021-07-21 13:49:18 +01:00
rodzic 917b4ebd07
commit ce3a3daffa
5 zmienionych plików z 33 dodań i 9 usunięć

Wyświetl plik

@ -5,6 +5,7 @@ from django.utils.translation import gettext_lazy as _
from django_filters.widgets import SuffixedMultiWidget
from wagtail.admin.widgets import AdminDateInput, BooleanButtonSelect, ButtonSelect, FilteredSelect
from wagtail.core.utils import get_content_type_label
class DateRangePickerWidget(SuffixedMultiWidget):
@ -107,12 +108,7 @@ class ContentTypeModelChoiceField(django_filters.fields.ModelChoiceField):
than the default 'wagtailcore | page' representation of a ContentType
"""
def label_from_instance(self, obj):
model = obj.model_class()
if model:
return model._meta.verbose_name.capitalize()
else:
# no corresponding model class found; fall back on the name field of the ContentType
return obj.model
return get_content_type_label(obj)
class ContentTypeFilter(django_filters.ModelChoiceFilter):

Wyświetl plik

@ -7,7 +7,10 @@
<thead>
<tr>
<th class="title">
{% trans 'Page' %}
{% trans 'Item' %}
</th>
<th>
{% trans 'Object type' %}
</th>
<th>
{% trans 'Action' %}
@ -35,6 +38,9 @@
{{ entry.label }}
{% endif %}
</td>
<td>
{{ entry.content_type|format_content_type }}
</td>
<td>
{{ entry.message }}
</td>

Wyświetl plik

@ -37,7 +37,7 @@ from wagtail.core.models import (
from wagtail.core.telepath import JSContext
from wagtail.core.utils import camelcase_to_underscore
from wagtail.core.utils import cautious_slugify as _cautious_slugify
from wagtail.core.utils import escape_script
from wagtail.core.utils import escape_script, get_content_type_label
from wagtail.users.utils import get_gravatar_url
@ -659,6 +659,11 @@ def user_display_name(user):
return ''
@register.filter
def format_content_type(content_type):
return get_content_type_label(content_type)
@register.simple_tag
def i18n_enabled():
return getattr(settings, 'WAGTAIL_I18N_ENABLED', False)

Wyświetl plik

@ -155,7 +155,11 @@ class LogEntriesView(ReportView):
# and build a lookup table
object_lookup = {}
for log_model_index, pks in pks_by_log_model_index.items():
log_entries = self.log_models[log_model_index].objects.prefetch_related('user__wagtail_userprofile').in_bulk(pks)
log_entries = (
self.log_models[log_model_index].objects
.prefetch_related('user__wagtail_userprofile', 'content_type')
.in_bulk(pks)
)
for pk, log_entry in log_entries.items():
object_lookup[(log_model_index, pk)] = log_entry

Wyświetl plik

@ -136,6 +136,19 @@ def safe_snake_case(value):
return snake_case_string
def get_content_type_label(content_type):
"""
Return a human-readable label for a content type object, suitable for display in the admin
in place of the default 'wagtailcore | page' representation
"""
model = content_type.model_class()
if model:
return model._meta.verbose_name.capitalize()
else:
# no corresponding model class found; fall back on the name field of the ContentType
return content_type.model.capitalize()
def accepts_kwarg(func, kwarg):
"""
Determine whether the callable `func` has a signature that accepts the keyword argument `kwarg`