kopia lustrzana https://github.com/wagtail/wagtail
Refactor images single upload view to use generic CreateView
rodzic
89bd68b0dc
commit
ed2f0c4720
|
@ -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"),
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Ładowanie…
Reference in New Issue