Nicer labels for object type dropdown

pull/7535/head
Matt Westcott 2021-07-20 19:17:17 +01:00
rodzic b24a8203c9
commit c4a977eab4
2 zmienionych plików z 20 dodań i 2 usunięć

Wyświetl plik

@ -99,3 +99,21 @@ class WagtailFilterSet(django_filters.FilterSet):
params.setdefault('widget', BooleanButtonSelect)
return filter_class, params
class ContentTypeModelChoiceField(django_filters.fields.ModelChoiceField):
"""
Custom ModelChoiceField for ContentType, to show the model verbose name as the label rather
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
class ContentTypeFilter(django_filters.ModelChoiceFilter):
field_class = ContentTypeModelChoiceField

Wyświetl plik

@ -11,7 +11,7 @@ from django.db.models import IntegerField, Value
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from wagtail.admin.filters import DateRangePickerWidget, WagtailFilterSet
from wagtail.admin.filters import ContentTypeFilter, DateRangePickerWidget, WagtailFilterSet
from wagtail.core.log_actions import registry as log_action_registry
from wagtail.core.models import PageLogEntry
@ -47,7 +47,7 @@ class SiteHistoryReportFilterSet(WagtailFilterSet):
user = django_filters.ModelChoiceFilter(
field_name='user', queryset=lambda request: get_users_for_filter()
)
object_type = django_filters.ModelChoiceFilter(
object_type = ContentTypeFilter(
label=_('Object type'),
field_name='content_type', queryset=lambda request: get_content_types_for_filter()
)