class PageHistoryView(ReportView): template_name = "wagtailadmin/pages/history.html" title = _("Page history") header_icon = "history" paginate_by = 20 filterset_class = PageHistoryReportFilterSet @method_decorator(user_passes_test(user_has_any_page_permission)) def dispatch(self, request, *args, **kwargs): self.page = get_object_or_404(Page, id=kwargs.pop("page_id")).specific return super().dispatch(request, *args, **kwargs) def get_context_data(self, *args, object_list=None, **kwargs): context = super().get_context_data(*args, object_list=object_list, **kwargs) context["page"] = self.page context["subtitle"] = self.page.get_admin_display_title() context["page_latest_revision"] = self.page.get_latest_revision() return context def get_queryset(self): return PageLogEntry.objects.filter(page=self.page).select_related( "revision", "user", "user__wagtail_userprofile")
class RevisionsCompare(RevisionsCompareView): history_label = gettext_lazy("Page history") edit_label = gettext_lazy("Edit this page") history_url_name = "wagtailadmin_pages:history" edit_url_name = "wagtailadmin_pages:edit" header_icon = "doc-empty-inverse" @method_decorator(user_passes_test(user_has_any_page_permission)) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def get_object(self, queryset=None): return get_object_or_404(Page, id=self.pk).specific def get_edit_handler(self): return self.object.get_edit_handler() def get_page_subtitle(self): return self.object.get_admin_display_title()
class PageHistoryView(ReportView): template_name = 'wagtailadmin/pages/history.html' title = _('Page history') header_icon = 'history' paginate_by = 20 filterset_class = PageHistoryReportFilterSet @method_decorator(user_passes_test(user_has_any_page_permission)) def dispatch(self, request, *args, **kwargs): self.page = get_object_or_404(Page, id=kwargs.pop('page_id')).specific return super().dispatch(request, *args, **kwargs) def get_context_data(self, *args, object_list=None, **kwargs): context = super().get_context_data(*args, object_list=object_list, **kwargs) context['page'] = self.page context['subtitle'] = self.page.get_admin_display_title() return context def get_queryset(self): return PageLogEntry.objects.filter(page=self.page)
"errors_debug": None, "action_menu": action_menu, "side_panels": side_panels, "form": form, # Used in unit tests "media": edit_handler.media + form.media + action_menu.media + side_panels.media, }, ) @method_decorator(user_passes_test(user_has_any_page_permission), name="dispatch") class RevisionsView(PreviewRevision): model = Page def setup(self, request, page_id, revision_id, *args, **kwargs): # Rename path kwargs from pk to page_id return super().setup(request, page_id, revision_id, *args, **kwargs) def get_object(self): page = get_object_or_404(Page, id=self.pk).specific perms = page.permissions_for_user(self.request.user) if not (perms.can_publish() or perms.can_edit()): raise PermissionDenied