Move remaining common context variables into BaseChooser

pull/7897/head
Matt Westcott 2022-05-09 13:26:20 +01:00 zatwierdzone przez LB (Ben Johnston)
rodzic 80bcc1b3dd
commit 08d06d623e
6 zmienionych plików z 26 dodań i 62 usunięć

Wyświetl plik

@ -97,6 +97,8 @@ class BaseChooser(widgets.Input):
display_title_key = (
"title" # key to use for the display title within the value data dict
)
icon = None
classname = None
# when looping over form fields, this one should appear in visible_fields, not hidden_fields
# despite the underlying input being type="hidden"
@ -140,6 +142,9 @@ class BaseChooser(widgets.Input):
self.get_hidden_input_context(name, value, attrs),
)
def get_chooser_modal_url(self):
return reverse(self.chooser_modal_url_name)
def get_context(self, name, value_data, attrs):
original_field_html = self.render_hidden_input(
name, value_data.get("id"), attrs
@ -152,6 +157,10 @@ class BaseChooser(widgets.Input):
value_data
), # only used by chooser.html to identify blank values
"edit_url": value_data.get("edit_url", ""),
"display_title": value_data.get(self.display_title_key, ""),
"chooser_url": self.get_chooser_modal_url(),
"icon": self.icon,
"classname": self.classname,
}
def render_html(self, name, value_data, attrs):
@ -225,6 +234,9 @@ class AdminPageChooser(BaseChooser):
choose_another_text = _("Choose another page")
link_to_chosen_text = _("Edit this page")
display_title_key = "display_title"
chooser_modal_url_name = "wagtailadmin_choose_page"
icon = "doc-empty-inverse"
classname = "page-chooser"
def __init__(
self, target_models=None, can_choose_root=False, user_perms=None, **kwargs
@ -295,18 +307,6 @@ class AdminPageChooser(BaseChooser):
data["parent_id"] = parent_page.pk if parent_page else None
return data
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
context.update(
{
"display_title": value_data.get("display_title", ""),
"icon": "doc-empty-inverse",
"classname": "page-chooser",
"chooser_url": reverse("wagtailadmin_choose_page"),
}
)
return context
def render_js_init(self, id_, name, value_data):
value_data = value_data or {}
return "createPageChooser({id}, {parent}, {options});".format(

Wyświetl plik

@ -1,7 +1,6 @@
import json
from django import forms
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from wagtail.admin.staticfiles import versioned_static
@ -15,17 +14,8 @@ class AdminTaskChooser(BaseChooser):
link_to_chosen_text = _("Edit this task")
model = Task
template_name = "wagtailadmin/workflows/widgets/task_chooser.html"
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
context.update(
{
"display_title": value_data.get("title", ""),
"classname": "task-chooser",
"chooser_url": reverse("wagtailadmin_workflows:task_chooser"),
}
)
return context
chooser_modal_url_name = "wagtailadmin_workflows:task_chooser"
classname = "task-chooser"
def render_js_init(self, id_, name, value_data):
return "createTaskChooser({0});".format(json.dumps(id_))

Wyświetl plik

@ -1,7 +1,6 @@
import json
from django import forms
from django.urls import reverse
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
@ -16,23 +15,14 @@ class AdminDocumentChooser(BaseChooser):
choose_one_text = _("Choose a document")
choose_another_text = _("Choose another document")
link_to_chosen_text = _("Edit this document")
chooser_modal_url_name = "wagtaildocs:chooser"
icon = "doc-full-inverse"
classname = "document-chooser"
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.model = get_document_model()
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
context.update(
{
"display_title": value_data.get("title", ""),
"icon": "doc-full-inverse",
"classname": "document-chooser",
"chooser_url": reverse("wagtaildocs:chooser"),
}
)
return context
def render_js_init(self, id_, name, value_data):
return "createDocumentChooser({0});".format(json.dumps(id_))

Wyświetl plik

@ -5,6 +5,6 @@
{% block chosen_state_view %}
<div class="preview-image">
<img alt="{{ title }}" class="show-transparency" height="{{ preview.height }}" src="{{ preview.url }}" title="{{ title }}" width="{{ preview.width }}">
<img alt="{{ display_title }}" class="show-transparency" height="{{ preview.height }}" src="{{ preview.url }}" title="{{ display_title }}" width="{{ preview.width }}">
</div>
{% endblock %}

Wyświetl plik

@ -1,7 +1,6 @@
import json
from django import forms
from django.urls import reverse
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
@ -18,6 +17,9 @@ class AdminImageChooser(BaseChooser):
choose_another_text = _("Change image")
link_to_chosen_text = _("Edit this image")
template_name = "wagtailimages/widgets/image_chooser.html"
chooser_modal_url_name = "wagtailimages:chooser"
icon = "image"
classname = "image-chooser"
def __init__(self, **kwargs):
super().__init__(**kwargs)
@ -35,15 +37,7 @@ class AdminImageChooser(BaseChooser):
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
context.update(
{
"title": value_data.get("title", ""),
"preview": value_data.get("preview", {}),
"icon": "image",
"classname": "image-chooser",
"chooser_url": reverse("wagtailimages:chooser"),
}
)
context["preview"] = value_data.get("preview", {})
return context
def render_js_init(self, id_, name, value_data):

Wyświetl plik

@ -14,6 +14,8 @@ from wagtail.widget_adapters import WidgetAdapter
class AdminSnippetChooser(BaseChooser):
display_title_key = "string"
icon = "snippet"
classname = "snippet-chooser"
def __init__(self, model, **kwargs):
self.model = model
@ -24,10 +26,8 @@ class AdminSnippetChooser(BaseChooser):
super().__init__(**kwargs)
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
chooser_url = reverse(
def get_chooser_modal_url(self):
return reverse(
"wagtailsnippets:choose",
args=[
self.model._meta.app_label,
@ -35,16 +35,6 @@ class AdminSnippetChooser(BaseChooser):
],
)
context.update(
{
"display_title": value_data.get("string", ""),
"chooser_url": chooser_url,
"icon": "snippet",
"classname": "snippet-chooser",
}
)
return context
def render_js_init(self, id_, name, value_data):
return "createSnippetChooser({id});".format(id=json.dumps(id_))