kopia lustrzana https://github.com/wagtail/wagtail
Use generic DeleteView for documents DeleteView
rodzic
e3d2e93fb2
commit
007990347d
wagtail/documents
templates/wagtaildocs/documents
tests
views
|
@ -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(
|
||||
|
|
|
@ -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 %}
|
|
@ -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"))
|
||||
|
|
|
@ -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(
|
||||
|
|
Ładowanie…
Reference in New Issue