From 1c94a9cd53f393cd24f42927b92778b35e868d09 Mon Sep 17 00:00:00 2001 From: jacobtm Date: Thu, 31 Oct 2019 10:05:38 +0000 Subject: [PATCH] Create base ReportView and refactor locked_pages into subclass LockedPagesView, with a base template base_reports.html for simple listing reports --- .../wagtailadmin/reports/base_report.html | 22 ++++++++++++ .../wagtailadmin/reports/locked_pages.html | 14 ++------ .../reports/locked_pages_results.html | 11 ------ wagtail/admin/urls/reports.py | 2 +- wagtail/admin/views/reports.py | 34 ++++++++++++++----- 5 files changed, 51 insertions(+), 32 deletions(-) create mode 100644 wagtail/admin/templates/wagtailadmin/reports/base_report.html delete mode 100644 wagtail/admin/templates/wagtailadmin/reports/locked_pages_results.html diff --git a/wagtail/admin/templates/wagtailadmin/reports/base_report.html b/wagtail/admin/templates/wagtailadmin/reports/base_report.html new file mode 100644 index 000000000..66388e8fe --- /dev/null +++ b/wagtail/admin/templates/wagtailadmin/reports/base_report.html @@ -0,0 +1,22 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n wagtailadmin_tags %} +{% block titletag %}{{ title }}{% endblock %} + +{% block content %} + {% include "wagtailadmin/shared/header.html" with title=title icon=header_icon %} + + {% with page_obj as pages %} +
+
+ {% if pages %} + {% block listing %} + {% include "wagtailadmin/pages/listing/_list_explore.html" %} + {% endblock %} + {% paginate pages base_url=request.path %} + {% else %} +

{% trans 'No pages available.' %}

+ {% endif %} +
+
+ {% endwith %} +{% endblock %} diff --git a/wagtail/admin/templates/wagtailadmin/reports/locked_pages.html b/wagtail/admin/templates/wagtailadmin/reports/locked_pages.html index 906d8e800..4a2e6c2aa 100644 --- a/wagtail/admin/templates/wagtailadmin/reports/locked_pages.html +++ b/wagtail/admin/templates/wagtailadmin/reports/locked_pages.html @@ -1,12 +1,4 @@ -{% extends "wagtailadmin/base.html" %} -{% load i18n %} -{% block titletag %}{% trans "Locked pages" %}{% endblock %} - -{% block content %} - {% trans "Locked pages" as title %} - {% include "wagtailadmin/shared/header.html" with title=title icon="locked" %} - -
- {% include "wagtailadmin/reports/locked_pages_results.html" %} -
+{% extends 'wagtailadmin/reports/base_report.html' %} +{% block listing %} + {% include "wagtailadmin/reports/listing/_list_unlock.html" %} {% endblock %} diff --git a/wagtail/admin/templates/wagtailadmin/reports/locked_pages_results.html b/wagtail/admin/templates/wagtailadmin/reports/locked_pages_results.html deleted file mode 100644 index d3c593324..000000000 --- a/wagtail/admin/templates/wagtailadmin/reports/locked_pages_results.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n wagtailadmin_tags %} -
- {% if pages %} - {% include "wagtailadmin/reports/listing/_list_unlock.html" %} - - {% url 'wagtailadmin_reports:locked_pages' as pagination_base_url %} - {% paginate pages base_url=pagination_base_url %} - {% else %} -

{% trans 'No pages have been locked.' %}

- {% endif %} -
diff --git a/wagtail/admin/urls/reports.py b/wagtail/admin/urls/reports.py index 652568156..0bcb13ccf 100644 --- a/wagtail/admin/urls/reports.py +++ b/wagtail/admin/urls/reports.py @@ -4,5 +4,5 @@ from wagtail.admin.views import reports app_name = 'wagtailadmin_reports' urlpatterns = [ - url(r'^locked/$', reports.locked_pages, name='locked_pages') + url(r'^locked/$', reports.LockedPagesView.as_view(), name='locked_pages') ] diff --git a/wagtail/admin/views/reports.py b/wagtail/admin/views/reports.py index eb67f3c2b..1455acfec 100644 --- a/wagtail/admin/views/reports.py +++ b/wagtail/admin/views/reports.py @@ -1,14 +1,30 @@ -from django.core.paginator import Paginator -from django.shortcuts import render +from django.utils.translation import ugettext as _ +from django.views.generic.base import TemplateResponseMixin +from django.views.generic.list import BaseListView + from wagtail.core.models import UserPagePermissionsProxy -def locked_pages(request): - pages = UserPagePermissionsProxy(request.user).editable_pages().filter(locked=True) +class ReportView(TemplateResponseMixin, BaseListView): + header_icon = '' + page_kwarg = 'p' + template_name = None + title = '' + paginate_by = 10 - paginator = Paginator(pages, per_page=10) - pages = paginator.get_page(request.GET.get('p')) + def get_context_data(self, *args, object_list=None, **kwargs): + context = super().get_context_data(*args, object_list=object_list, **kwargs) + context['title'] = self.title + context['header_icon'] = self.header_icon + return context - return render(request, 'wagtailadmin/reports/locked_pages.html', { - 'pages': pages, - }) + +class LockedPagesView(ReportView): + template_name = 'wagtailadmin/reports/locked_pages.html' + title = _('Locked Pages') + header_icon = 'locked' + + def get_queryset(self): + pages = UserPagePermissionsProxy(self.request.user).editable_pages().filter(locked=True) + self.queryset = pages + return super().get_queryset()