Add the ability to export snippet listing via SnippetViewSet.list_export

pull/10626/head
Sage Abdullah 2023-07-03 12:23:53 +01:00
rodzic a2487fe6d9
commit 0a731b37f4
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: EB1A33CC51CC0217
2 zmienionych plików z 23 dodań i 2 usunięć

Wyświetl plik

@ -16,7 +16,12 @@
{% fragment as base_action_locale %}{% if locale %}{% include 'wagtailadmin/shared/locale_selector.html' with theme="large" %}{% endif %}{% endfragment %}
{% fragment as action_url_add_snippet %}{% if can_add_snippet %}{% url view.add_url_name %}{% if locale %}?locale={{ locale.language_code }}{% endif %}{% endif %}{% endfragment %}
{% fragment as action_text_snippet %}{% blocktrans trimmed with snippet_type_name=model_opts.verbose_name %}Add {{ snippet_type_name }}{% endblocktrans %}{% endfragment %}
{% include 'wagtailadmin/shared/header.html' with breadcrumb=breadcrumb title=model_opts.verbose_name_plural|capfirst icon=header_icon search_url=search_url base_actions=base_action_locale action_url=action_url_add_snippet action_icon="plus" action_text=action_text_snippet %}
{% fragment as extra_actions %}
{% if view.list_export %}
{% include view.export_buttons_template_name %}
{% endif %}
{% endfragment %}
{% include 'wagtailadmin/shared/header.html' with breadcrumb=breadcrumb title=model_opts.verbose_name_plural|capfirst icon=header_icon search_url=search_url base_actions=base_action_locale action_url=action_url_add_snippet action_icon="plus" action_text=action_text_snippet extra_actions=extra_actions %}
<div class="nice-padding{% if filters %} filterable{% endif %}">
<div id="listing-results" class="snippets">

Wyświetl plik

@ -33,6 +33,7 @@ from wagtail.admin.views.generic.preview import (
PreviewOnEdit,
PreviewRevision,
)
from wagtail.admin.views.mixins import SpreadsheetExportMixin
from wagtail.admin.views.reports.base import ReportView
from wagtail.admin.viewsets import viewsets
from wagtail.admin.viewsets.model import ModelViewSet
@ -154,7 +155,11 @@ class SnippetTitleColumn(TitleColumn):
cell_template_name = "wagtailsnippets/snippets/tables/title_cell.html"
class IndexView(generic.IndexViewOptionalFeaturesMixin, generic.IndexView):
class IndexView(
SpreadsheetExportMixin,
generic.IndexViewOptionalFeaturesMixin,
generic.IndexView,
):
view_name = "list"
index_results_url_name = None
delete_url_name = None
@ -203,6 +208,13 @@ class IndexView(generic.IndexViewOptionalFeaturesMixin, generic.IndexView):
return context
def render_to_response(self, context, **response_kwargs):
if self.is_export:
return self.as_spreadsheet(
context["object_list"], self.request.GET.get("export")
)
return super().render_to_response(context, **response_kwargs)
class CreateView(generic.CreateEditViewOptionalFeaturesMixin, generic.CreateView):
view_name = "create"
@ -657,6 +669,8 @@ class SnippetViewSet(ModelViewSet):
#: If ``filterset_class`` is set, this attribute will be ignored.
list_filter = None
list_export = []
#: The number of items to display per page in the index view. Defaults to 20.
list_per_page = 20
@ -852,6 +866,7 @@ class SnippetViewSet(ModelViewSet):
delete_url_name=self.get_url_name("delete"),
list_display=self.list_display,
list_filter=self.list_filter,
list_export=self.list_export,
paginate_by=self.list_per_page,
default_ordering=self.ordering,
search_fields=self.search_fields,
@ -874,6 +889,7 @@ class SnippetViewSet(ModelViewSet):
delete_url_name=self.get_url_name("delete"),
list_display=self.list_display,
list_filter=self.list_filter,
list_export=self.list_export,
paginate_by=self.list_per_page,
default_ordering=self.ordering,
search_fields=self.search_fields,