From 252f9dcc1fee3faec11a1aeefcfa5bd24cb7c4cf Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Thu, 7 Jul 2022 23:20:51 +0100 Subject: [PATCH] Use ChooserViewSet to generate DocumentChooserBlock --- wagtail/documents/blocks.py | 28 ++-------------------------- wagtail/documents/views/chooser.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/wagtail/documents/blocks.py b/wagtail/documents/blocks.py index 261343ea0b..291fa803ab 100644 --- a/wagtail/documents/blocks.py +++ b/wagtail/documents/blocks.py @@ -1,27 +1,3 @@ -from django.utils.functional import cached_property -from django.utils.html import format_html +from wagtail.documents.views.chooser import viewset as chooser_viewset -from wagtail.blocks import ChooserBlock - - -class DocumentChooserBlock(ChooserBlock): - @cached_property - def target_model(self): - from wagtail.documents import get_document_model - - return get_document_model() - - @cached_property - def widget(self): - from wagtail.documents.widgets import AdminDocumentChooser - - return AdminDocumentChooser() - - def render_basic(self, value, context=None): - if value: - return format_html('{1}', value.url, value.title) - else: - return "" - - class Meta: - icon = "doc-empty" +DocumentChooserBlock = chooser_viewset.block_class diff --git a/wagtail/documents/views/chooser.py b/wagtail/documents/views/chooser.py index 38623fdb6c..97057e0004 100644 --- a/wagtail/documents/views/chooser.py +++ b/wagtail/documents/views/chooser.py @@ -3,6 +3,7 @@ import json from django import forms from django.urls import reverse from django.utils.functional import cached_property +from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from django.views.generic.base import View @@ -19,8 +20,8 @@ from wagtail.admin.views.generic.chooser import ( ) from wagtail.admin.viewsets.chooser import ChooserViewSet from wagtail.admin.widgets import BaseChooser +from wagtail.blocks import ChooserBlock from wagtail.documents import get_document_model -from wagtail.documents.forms import get_document_form from wagtail.documents.permissions import permission_policy @@ -40,6 +41,8 @@ class DocumentCreationFormMixin(CreationFormMixin): creation_tab_id = "upload" def get_creation_form_class(self): + from wagtail.documents.forms import get_document_form + return get_document_form(self.model) def get_creation_form_kwargs(self): @@ -165,12 +168,21 @@ class BaseAdminDocumentChooser(BaseChooser): ) +class BaseDocumentChooserBlock(ChooserBlock): + def render_basic(self, value, context=None): + if value: + return format_html('{1}', value.url, value.title) + else: + return "" + + class DocumentChooserViewSet(ChooserViewSet): choose_view_class = DocumentChooseView choose_results_view_class = DocumentChooseResultsView chosen_view_class = DocumentChosenView create_view_class = DocumentChooserUploadView base_widget_class = BaseAdminDocumentChooser + base_block_class = BaseDocumentChooserBlock permission_policy = permission_policy icon = "doc-full-inverse"