Refactor images single upload view to use generic CreateView

pull/12319/head
Sage Abdullah 2024-09-02 14:28:40 +01:00 zatwierdzone przez Matt Westcott
rodzic 89bd68b0dc
commit ed2f0c4720
4 zmienionych plików z 47 dodań i 63 usunięć

Wyświetl plik

@ -19,7 +19,7 @@ urlpatterns = [
name="generate_url", name="generate_url",
), ),
path("<int:image_id>/preview/<str:filter_spec>/", images.preview, name="preview"), path("<int:image_id>/preview/<str:filter_spec>/", images.preview, name="preview"),
path("add/", images.add, name="add"), path("add/", images.CreateView.as_view(), name="add"),
path("usage/<int:image_id>/", images.UsageView.as_view(), name="image_usage"), path("usage/<int:image_id>/", images.UsageView.as_view(), name="image_usage"),
path("multiple/add/", multiple.AddView.as_view(), name="add_multiple"), path("multiple/add/", multiple.AddView.as_view(), name="add_multiple"),
path("multiple/<int:image_id>/", multiple.EditView.as_view(), name="edit_multiple"), path("multiple/<int:image_id>/", multiple.EditView.as_view(), name="edit_multiple"),

Wyświetl plik

@ -1,13 +1,10 @@
{% extends "wagtailadmin/base.html" %} {% extends "wagtailadmin/generic/form.html" %}
{% load wagtailimages_tags wagtailadmin_tags %} {% load wagtailimages_tags wagtailadmin_tags i18n %}
{% load i18n %}
{% block titletag %}{% trans "Add an image" %}{% endblock %} {% block titletag %}{% trans "Add an image" %}{% endblock %}
{% block extra_js %} {% block extra_js %}
{{ block.super }} {{ block.super }}
{{ form.media.js }}
<script> <script>
$(function() { $(function() {
$('#id_file').on( $('#id_file').on(
@ -39,30 +36,15 @@
</script> </script>
{% endblock %} {% endblock %}
{% block extra_css %} {% block actions %}
{{ block.super }} <button
{{ form.media.css }} type="submit"
{% endblock %} class="button button-longrunning"
data-controller="w-progress"
{% block content %} data-action="w-progress#activate"
{% trans "Add image" as add_str %} data-w-progress-active-value="{% trans 'Uploading…' %}"
{% include "wagtailadmin/shared/header.html" with title=add_str icon="image" %} >
{% icon name="spinner" %}
<div class="nice-padding"> <em data-w-progress-target="label">{% trans 'Upload' %}</em>
{% include "wagtailadmin/shared/non_field_errors.html" %} </button>
<form action="{% url 'wagtailimages:add' %}" method="POST" enctype="multipart/form-data" novalidate>
{% csrf_token %}
<ul class="fields">
{% for field in form %}
{% if field.is_hidden %}
{{ field }}
{% else %}
<li>{% formattedfield field %}</li>
{% endif %}
{% endfor %}
<li><input type="submit" value="{% trans 'Save' %}" class="button" /></li>
</ul>
</form>
</div>
{% endblock %} {% endblock %}

Wyświetl plik

@ -515,7 +515,7 @@ class TestImageListingResultsView(WagtailTestUtils, TransactionTestCase):
) )
class TestImageAddView(WagtailTestUtils, TestCase): class TestImageAddView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
def setUp(self): def setUp(self):
self.login() self.login()
@ -543,6 +543,14 @@ class TestImageAddView(WagtailTestUtils, TestCase):
# draftail should NOT be a standard JS include on this page # draftail should NOT be a standard JS include on this page
self.assertNotContains(response, "wagtailadmin/js/draftail.js") self.assertNotContains(response, "wagtailadmin/js/draftail.js")
self.assertBreadcrumbsItemsRendered(
[
{"url": reverse("wagtailimages:index"), "label": "Images"},
{"url": "", "label": "New: Image"},
],
response.content,
)
def test_get_with_collections(self): def test_get_with_collections(self):
root_collection = Collection.get_first_root_node() root_collection = Collection.get_first_root_node()
root_collection.add_child(name="Evil plans") root_collection.add_child(name="Evil plans")

Wyświetl plik

@ -337,39 +337,33 @@ class DeleteView(generic.DeleteView):
} }
@permission_checker.require("add") class CreateView(generic.CreateView):
def add(request): permission_policy = permission_policy
ImageModel = get_image_model() index_url_name = "wagtailimages:index"
ImageForm = get_image_form(ImageModel) add_url_name = "wagtailimages:add"
edit_url_name = "wagtailimages:edit"
error_message = gettext_lazy("The image could not be created due to errors.")
template_name = "wagtailimages/images/add.html"
header_icon = "image"
_show_breadcrumbs = True
if request.method == "POST": @cached_property
image = ImageModel(uploaded_by_user=request.user) def model(self):
form = ImageForm(request.POST, request.FILES, instance=image, user=request.user) return get_image_model()
if form.is_valid():
form.save()
messages.success( def get_form_class(self):
request, return get_image_form(self.model)
_("Image '%(image_title)s' added.") % {"image_title": image.title},
buttons=[
messages.button(
reverse("wagtailimages:edit", args=(image.id,)), _("Edit")
)
],
)
return redirect("wagtailimages:index")
else:
messages.error(request, _("The image could not be created due to errors."))
else:
form = ImageForm(user=request.user)
return TemplateResponse( def get_form_kwargs(self):
request, kwargs = super().get_form_kwargs()
"wagtailimages/images/add.html", kwargs["user"] = self.request.user
{ return kwargs
"form": form,
}, def get_initial_form_instance(self):
) return self.model(uploaded_by_user=self.request.user)
def get_success_message(self, instance):
return _("Image '%(image_title)s' added.") % {"image_title": instance.title}
class UsageView(generic.UsageView): class UsageView(generic.UsageView):