kopia lustrzana https://github.com/wagtail/wagtail
Make HistoryView inherit from BaseListingView instead of models.IndexView
along the way, make filtering work again by setting up a history_results view - the search/filter form in slim_header is hard-coded to use index_results_url as the action URL, which caused it to replace the results with a fragment from the index view instead.pull/11434/head
rodzic
bd0a3d51b7
commit
e3bf15d2ca
|
@ -1,7 +1,7 @@
|
|||
from datetime import timedelta
|
||||
|
||||
import django_filters
|
||||
from django.contrib.admin.utils import unquote
|
||||
from django.contrib.admin.utils import quote, unquote
|
||||
from django.core.paginator import Paginator
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse
|
||||
|
@ -12,8 +12,12 @@ from django.views.generic import TemplateView
|
|||
|
||||
from wagtail.admin.filters import DateRangePickerWidget, WagtailFilterSet
|
||||
from wagtail.admin.ui.tables import Column, DateColumn, InlineActionsTable, UserColumn
|
||||
from wagtail.admin.views.generic.base import BaseObjectMixin, WagtailAdminTemplateMixin
|
||||
from wagtail.admin.views.generic.models import IndexView
|
||||
from wagtail.admin.views.generic.base import (
|
||||
BaseListingView,
|
||||
BaseObjectMixin,
|
||||
WagtailAdminTemplateMixin,
|
||||
)
|
||||
from wagtail.admin.views.generic.permissions import PermissionCheckedMixin
|
||||
from wagtail.admin.widgets.button import HeaderButton
|
||||
from wagtail.log_actions import registry as log_registry
|
||||
from wagtail.models import (
|
||||
|
@ -54,10 +58,11 @@ class HistoryReportFilterSet(WagtailFilterSet):
|
|||
self.filters["action"].extra["choices"] = get_actions_for_filter()
|
||||
|
||||
|
||||
class HistoryView(IndexView):
|
||||
class HistoryView(PermissionCheckedMixin, BaseListingView):
|
||||
any_permission_required = ["add", "change", "delete"]
|
||||
page_title = gettext_lazy("History")
|
||||
results_template_name = "wagtailadmin/generic/history_results.html"
|
||||
history_results_url_name = None
|
||||
header_icon = "history"
|
||||
is_searchable = False
|
||||
paginate_by = 20
|
||||
|
@ -68,6 +73,7 @@ class HistoryView(IndexView):
|
|||
UserColumn("user", blank_display_name="system"),
|
||||
DateColumn("timestamp", label=gettext_lazy("Date")),
|
||||
]
|
||||
edit_url_name = None
|
||||
|
||||
def setup(self, request, *args, pk, **kwargs):
|
||||
self.pk = pk
|
||||
|
@ -110,6 +116,14 @@ class HistoryView(IndexView):
|
|||
),
|
||||
]
|
||||
|
||||
def get_edit_url(self, instance):
|
||||
if self.edit_url_name:
|
||||
return reverse(self.edit_url_name, args=(quote(instance.pk),))
|
||||
|
||||
def get_history_results_url(self, instance):
|
||||
if self.history_results_url_name:
|
||||
return reverse(self.history_results_url_name, args=(quote(instance.pk),))
|
||||
|
||||
def get_context_data(self, *args, object_list=None, **kwargs):
|
||||
context = super().get_context_data(*args, object_list=object_list, **kwargs)
|
||||
context["object"] = self.object
|
||||
|
@ -118,12 +132,15 @@ class HistoryView(IndexView):
|
|||
"model_name": self.model._meta.verbose_name
|
||||
}
|
||||
context["header_action_icon"] = "edit"
|
||||
context["index_results_url"] = self.get_history_results_url(self.object)
|
||||
return context
|
||||
|
||||
def get_base_queryset(self):
|
||||
return log_registry.get_logs_for_instance(self.object).select_related(
|
||||
def get_queryset(self):
|
||||
queryset = log_registry.get_logs_for_instance(self.object).select_related(
|
||||
"revision", "user", "user__wagtail_userprofile"
|
||||
)
|
||||
queryset = self.filter_queryset(queryset)
|
||||
return queryset
|
||||
|
||||
|
||||
class WorkflowHistoryView(BaseObjectMixin, WagtailAdminTemplateMixin, TemplateView):
|
||||
|
|
|
@ -175,6 +175,7 @@ class ModelViewSet(ViewSet):
|
|||
def get_history_view_kwargs(self, **kwargs):
|
||||
return {
|
||||
"template_name": self.history_template_name,
|
||||
"history_results_url_name": self.get_url_name("history_results"),
|
||||
"header_icon": "history",
|
||||
**kwargs,
|
||||
}
|
||||
|
@ -257,6 +258,12 @@ class ModelViewSet(ViewSet):
|
|||
self.history_view_class, **self.get_history_view_kwargs()
|
||||
)
|
||||
|
||||
@property
|
||||
def history_results_view(self):
|
||||
return self.construct_view(
|
||||
self.history_view_class, **self.get_history_view_kwargs(), results_only=True
|
||||
)
|
||||
|
||||
@property
|
||||
def usage_view(self):
|
||||
return self.construct_view(
|
||||
|
@ -600,6 +607,11 @@ class ModelViewSet(ViewSet):
|
|||
path("edit/<str:pk>/", self.edit_view, name="edit"),
|
||||
path("delete/<str:pk>/", self.delete_view, name="delete"),
|
||||
path("history/<str:pk>/", self.history_view, name="history"),
|
||||
path(
|
||||
"history-results/<str:pk>/",
|
||||
self.history_results_view,
|
||||
name="history_results",
|
||||
),
|
||||
path("usage/<str:pk>/", self.usage_view, name="usage"),
|
||||
]
|
||||
|
||||
|
|
|
@ -1141,6 +1141,11 @@ class SnippetViewSet(ModelViewSet):
|
|||
path("delete/<str:pk>/", self.delete_view, name="delete"),
|
||||
path("usage/<str:pk>/", self.usage_view, name="usage"),
|
||||
path("history/<str:pk>/", self.history_view, name="history"),
|
||||
path(
|
||||
"history-results/<str:pk>/",
|
||||
self.history_results_view,
|
||||
name="history_results",
|
||||
),
|
||||
]
|
||||
|
||||
if self.inspect_view_enabled:
|
||||
|
|
Ładowanie…
Reference in New Issue