Use generic DeleteView for documents DeleteView

pull/10072/head
Sage Abdullah 2023-02-16 17:25:34 +00:00
rodzic e3d2e93fb2
commit 007990347d
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: EB1A33CC51CC0217
4 zmienionych plików z 34 dodań i 58 usunięć
wagtail/documents

Wyświetl plik

@ -8,7 +8,7 @@ urlpatterns = [
path("results/", documents.ListingResultsView.as_view(), name="listing_results"),
path("add/", documents.add, name="add"),
path("edit/<int:document_id>/", documents.edit, name="edit"),
path("delete/<int:document_id>/", documents.delete, name="delete"),
path("delete/<int:document_id>/", documents.DeleteView.as_view(), name="delete"),
path("multiple/add/", multiple.AddView.as_view(), name="add_multiple"),
path("multiple/<int:doc_id>/", multiple.EditView.as_view(), name="edit_multiple"),
path(

Wyświetl plik

@ -1,28 +0,0 @@
{% extends "wagtailadmin/base.html" %}
{% load wagtailadmin_tags i18n %}
{% block titletag %}{% blocktrans trimmed with title=document.title %}Delete {{ title }}{% endblocktrans %}{% endblock %}
{% block content %}
{% trans "Delete document" as del_str %}
{% include "wagtailadmin/shared/header.html" with title=del_str subtitle=document.title icon="doc-full-inverse" %}
<div class="nice-padding">
<div class="usagecount">
<a href="{{ document.usage_url }}">{% blocktrans trimmed count usage_count=document.get_usage.count %}Used {{ usage_count }} time{% plural %}Used {{ usage_count }} times{% endblocktrans %}</a>
</div>
<p>
{# This message will only appear in the singular, but we specify a plural so it can share the translation string with confirm_bulk_delete.html #}
{% blocktrans trimmed count counter=1 %}
Are you sure you want to delete this document?
{% plural %}
Are you sure you want to delete these documents?
{% endblocktrans %}
</p>
<form action="{% url 'wagtaildocs:delete' document.id %}" method="POST">
{% csrf_token %}
<input type="hidden" value="{{ next }}" name="next">
<input type="submit" value='{% trans "Yes, delete" %}' class="button serious" />
<a href="{% url 'wagtaildocs:index' %}" class="button button-secondary">{% trans "No, don't delete" %}</a>
</form>
</div>
{% endblock %}

Wyświetl plik

@ -772,7 +772,7 @@ class TestDocumentDeleteView(WagtailTestUtils, TestCase):
reverse("wagtaildocs:delete", args=(self.document.id,))
)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/documents/confirm_delete.html")
self.assertTemplateUsed(response, "wagtailadmin/generic/confirm_delete.html")
def test_delete(self):
# Submit title change
@ -791,9 +791,9 @@ class TestDocumentDeleteView(WagtailTestUtils, TestCase):
reverse("wagtaildocs:delete", args=(self.document.id,))
)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/documents/confirm_delete.html")
self.assertTemplateUsed(response, "wagtailadmin/generic/confirm_delete.html")
self.assertContains(response, self.document.usage_url)
self.assertContains(response, "Used 0 times")
self.assertContains(response, "This document is referenced 0 times")
class TestMultipleDocumentUploader(WagtailTestUtils, TestCase):
@ -2072,7 +2072,7 @@ class TestEditOnlyPermissions(WagtailTestUtils, TestCase):
reverse("wagtaildocs:delete", args=(self.document.id,))
)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/documents/confirm_delete.html")
self.assertTemplateUsed(response, "wagtailadmin/generic/confirm_delete.html")
def test_get_add_multiple(self):
response = self.client.get(reverse("wagtaildocs:add_multiple"))

Wyświetl plik

@ -8,6 +8,7 @@ from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.http import urlencode
from django.utils.translation import gettext as _
from django.utils.translation import gettext_lazy, ngettext
from django.views.generic import TemplateView
from wagtail.admin import messages
@ -250,34 +251,36 @@ def edit(request, document_id):
)
@permission_checker.require("delete")
def delete(request, document_id):
Document = get_document_model()
doc = get_object_or_404(Document, id=document_id)
class DeleteView(generic.DeleteView):
model = get_document_model()
pk_url_kwarg = "document_id"
permission_policy = permission_policy
permission_required = "delete"
header_icon = "doc-full-inverse"
usage_url_name = "wagtaildocs:document_usage"
delete_url_name = "wagtaildocs:delete"
index_url_name = "wagtaildocs:index"
page_title = gettext_lazy("Delete document")
if not permission_policy.user_has_permission_for_instance(
request.user, "delete", doc
):
raise PermissionDenied
next_url = get_valid_next_url_from_request(request)
if request.method == "POST":
doc.delete()
messages.success(
request,
_("Document '%(document_title)s' deleted.") % {"document_title": doc.title},
def user_has_permission(self, permission):
return self.permission_policy.user_has_permission_for_instance(
self.request.user, permission, self.object
)
return redirect(next_url) if next_url else redirect("wagtaildocs:index")
return TemplateResponse(
request,
"wagtaildocs/documents/confirm_delete.html",
{
"document": doc,
"next": next_url,
},
)
@property
def confirmation_message(self):
# This message will only appear in the singular, but we specify a plural
# so it can share the translation string with confirm_bulk_delete.html
return ngettext(
"Are you sure you want to delete this document?",
"Are you sure you want to delete these documents?",
1,
)
def get_success_message(self):
return _("Document '%(document_title)s' deleted.") % {
"document_title": self.object.title
}
class UsageView(generic.UsageView):
@ -285,6 +288,7 @@ class UsageView(generic.UsageView):
pk_url_kwarg = "document_id"
permission_policy = permission_policy
permission_required = "change"
header_icon = "doc-full-inverse"
def user_has_permission(self, permission):
return self.permission_policy.user_has_permission_for_instance(