Remove unused snippets delete-multiple view

pull/10234/head
Sage Abdullah 2023-02-15 17:48:31 +00:00 zatwierdzone przez Matt Westcott
rodzic 1db65a3fe0
commit f3637ad857
3 zmienionych plików z 23 dodań i 199 usunięć

Wyświetl plik

@ -1,39 +1,11 @@
{% extends "wagtailadmin/base.html" %}
{% extends "wagtailadmin/generic/confirm_delete.html" %}
{% load wagtailadmin_tags i18n %}
{% block titletag %}
{% if objects|length == 1 %}
{% blocktrans trimmed with snippet_type_name=model_opts.verbose_name %}Delete {{ snippet_type_name }}{% endblocktrans %} - {{ objects|first }}
{% else %}
{{ objects|length }} {{ model_opts.verbose_name_plural|capfirst }}
{% endif %}
{% endblock %}
{% block content %}
{% trans "Delete " as delete_str %}
{% if objects|length == 1 %}
{% include "wagtailadmin/shared/header.html" with title=delete_str subtitle=objects|first icon="snippet" only %}
{% else %}
{% include "wagtailadmin/shared/header.html" with title=delete_str subtitle=model_opts.verbose_name_plural|capfirst icon="snippet" only %}
{% endif %}
<div class="nice-padding">
{% if objects|length == 1 %}
<div class="usagecount">
<a href="{{ objects.0.usage_url }}">{% blocktrans trimmed count usage_count=objects.0.get_usage.count %}Used {{ usage_count }} time{% plural %}Used {{ usage_count }} times{% endblocktrans %}</a>
</div>
<p>{% blocktrans trimmed with snippet_type_name=model_opts.verbose_name %}Are you sure you want to delete this {{ snippet_type_name }}?{% endblocktrans %}</p>
{% else %}
<p>{% blocktrans trimmed with snippet_type_name=model_opts.verbose_name_plural count=objects|length %}Are you sure you want to delete {{ count }} {{ snippet_type_name }}?{% endblocktrans %}</p>
<ul>
{% for instance in objects %}
<li>{{ instance }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="{{ action_url }}" method="POST">
{% csrf_token %}
<input type="submit" value="{% trans 'Yes, delete' %}" class="button serious" />
<a href="{% if next %}{{ next }}{% else %}{% url view.index_url_name %}{% endif %}" class="button button-secondary">{% trans "No, don't delete" %}</a>
</form>
{% block main_content %}
<div class="usagecount">
<a href="{{ object.usage_url }}">{% blocktrans trimmed count usage_count=object.get_usage.count %}Used {{ usage_count }} time{% plural %}Used {{ usage_count }} times{% endblocktrans %}</a>
</div>
<p>{% blocktrans trimmed with snippet_type_name=model_opts.verbose_name %}Are you sure you want to delete this {{ snippet_type_name }}?{% endblocktrans %}</p>
{{ block.super }}
{% endblock %}

Wyświetl plik

@ -3706,68 +3706,6 @@ class TestSnippetDelete(WagtailTestUtils, TestCase):
self.assertFalse(Advert.objects.filter(pk=advert.pk).exists())
class TestSnippetDeleteMultipleWithOne(WagtailTestUtils, TestCase):
# test deletion of one snippet using the delete-multiple URL
# behaviour should mimic the TestSnippetDelete but with different URl structure
fixtures = ["test.json"]
def setUp(self):
self.snippet = Advert.objects.get(id=1)
self.login()
def test_delete_get(self):
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % (self.snippet.id)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_delete_post(self):
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % (self.snippet.id)
response = self.client.post(url)
# Should be redirected to the listing page
self.assertRedirects(response, reverse("wagtailsnippets_tests_advert:list"))
# Check that the page is gone
self.assertEqual(Advert.objects.filter(text="test_advert").count(), 0)
class TestSnippetDeleteMultipleWithThree(WagtailTestUtils, TestCase):
# test deletion of three snippets using the delete-multiple URL
fixtures = ["test.json"]
def setUp(self):
# first advert is in the fixtures
Advert.objects.create(text="Boreas").save()
Advert.objects.create(text="Cloud 9").save()
self.snippets = Advert.objects.all()
self.login()
def test_delete_get(self):
# tests that the URL is available on get
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % (
"&id=".join(["%s" % snippet.id for snippet in self.snippets])
)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_delete_post(self):
# tests that the URL is available on post and deletes snippets
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % (
"&id=".join(["%s" % snippet.id for snippet in self.snippets])
)
response = self.client.post(url)
# Should be redirected to the listing page
self.assertRedirects(response, reverse("wagtailsnippets_tests_advert:list"))
# Check that the page is gone
self.assertEqual(Advert.objects.filter(text="test_advert").count(), 0)
class TestSnippetChooserPanel(WagtailTestUtils, TestCase):
fixtures = ["test.json"]
@ -4848,13 +4786,6 @@ class TestAddOnlyPermissions(WagtailTestUtils, TestCase):
# permission should be denied
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_delete_mulitple(self):
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % self.test_snippet.id
response = self.client.get(url)
# permission should be denied
self.assertRedirects(response, reverse("wagtailadmin_home"))
class TestEditOnlyPermissions(WagtailTestUtils, TestCase):
fixtures = ["test.json"]
@ -4908,13 +4839,6 @@ class TestEditOnlyPermissions(WagtailTestUtils, TestCase):
# permission should be denied
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_delete_mulitple(self):
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % self.test_snippet.id
response = self.client.get(url)
# permission should be denied
self.assertRedirects(response, reverse("wagtailadmin_home"))
class TestDeleteOnlyPermissions(WagtailTestUtils, TestCase):
fixtures = ["test.json"]
@ -4968,15 +4892,6 @@ class TestDeleteOnlyPermissions(WagtailTestUtils, TestCase):
response, "wagtailsnippets/snippets/confirm_delete.html"
)
def test_get_delete_mulitple(self):
url = reverse("wagtailsnippets_tests_advert:delete-multiple")
url += "?id=%s" % self.test_snippet.id
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(
response, "wagtailsnippets/snippets/confirm_delete.html"
)
class TestSnippetEditHandlers(WagtailTestUtils, TestCase):
def test_standard_edit_handler(self):

Wyświetl plik

@ -1,18 +1,16 @@
from functools import partial
from urllib.parse import urlencode
import django_filters
from django.apps import apps
from django.contrib.admin.utils import quote, unquote
from django.core import checks
from django.core.exceptions import PermissionDenied
from django.db import transaction
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect
from django.urls import path, re_path, reverse
from django.utils.text import capfirst
from django.utils.translation import gettext as _
from django.utils.translation import gettext_lazy, ngettext
from django.utils.translation import gettext_lazy
from wagtail.admin.admin_url_finder import register_admin_url_finder
from wagtail.admin.checks import check_panels_in_model
@ -36,7 +34,6 @@ from wagtail.admin.views.generic.preview import PreviewRevision
from wagtail.admin.views.reports.base import ReportView
from wagtail.admin.viewsets import viewsets
from wagtail.admin.viewsets.base import ViewSet
from wagtail.log_actions import log
from wagtail.log_actions import registry as log_registry
from wagtail.models import (
DraftStateMixin,
@ -150,7 +147,7 @@ class SnippetTitleColumn(TitleColumn):
class IndexView(generic.IndexViewOptionalFeaturesMixin, generic.IndexView):
view_name = "list"
index_results_url_name = None
delete_multiple_url_name = None
delete_url_name = None
any_permission_required = ["add", "change", "delete"]
paginate_by = 20
page_kwarg = "p"
@ -178,9 +175,6 @@ class IndexView(generic.IndexViewOptionalFeaturesMixin, generic.IndexView):
"can_add_snippet": self.permission_policy.user_has_permission(
self.request.user, "add"
),
"can_delete_snippets": self.permission_policy.user_has_permission(
self.request.user, "delete"
),
}
)
@ -373,83 +367,27 @@ class EditView(generic.CreateEditViewOptionalFeaturesMixin, generic.EditView):
class DeleteView(generic.DeleteView):
view_name = "delete"
delete_multiple_url_name = None
permission_required = "delete"
page_title = gettext_lazy("Delete")
template_name = "wagtailsnippets/snippets/confirm_delete.html"
permission_required = "delete"
header_icon = "snippet"
def setup(self, request, *args, **kwargs):
super().setup(request, *args, **kwargs)
self.object = self.get_object()
def run_before_hook(self):
return self.run_hook("before_delete_snippet", self.request, self.objects)
return self.run_hook("before_delete_snippet", self.request, [self.object])
def run_after_hook(self):
return self.run_hook("after_delete_snippet", self.request, self.objects)
def setup(self, request, *args, pk=None, **kwargs):
super().setup(request, *args, **kwargs)
self.pk = pk
self.objects = self.get_objects()
def get_object(self, queryset=None):
# DeleteView requires either a pk kwarg or a positional arg, but we use
# an `id` query param for multiple objects. We need to explicitly override
# this so that we don't have to override `post()`.
return None
def get_objects(self):
# Replaces get_object to allow returning multiple objects instead of just one
if self.pk:
return [get_object_or_404(self.model, pk=unquote(self.pk))]
ids = self.request.GET.getlist("id")
objects = self.model.objects.filter(pk__in=ids)
return objects
def get_delete_url(self):
return (
reverse(
self.delete_multiple_url_name,
)
+ "?"
+ urlencode([("id", instance.pk) for instance in self.objects])
)
return self.run_hook("after_delete_snippet", self.request, [self.object])
def get_success_message(self):
count = len(self.objects)
if count == 1:
return _("%(model_name)s '%(object)s' deleted.") % {
"model_name": capfirst(self.model._meta.verbose_name),
"object": self.objects[0],
}
# This message is only used in plural form, but we'll define it with ngettext so that
# languages with multiple plural forms can be handled correctly (or, at least, as
# correctly as possible within the limitations of verbose_name_plural...)
return ngettext(
"%(count)d %(model_name)s deleted.",
"%(count)d %(model_name)s deleted.",
count,
) % {
"model_name": capfirst(self.model._meta.verbose_name_plural),
"count": count,
return _("%(model_name)s '%(object)s' deleted.") % {
"model_name": capfirst(self.model._meta.verbose_name),
"object": self.object,
}
def delete_action(self):
with transaction.atomic():
for instance in self.objects:
log(instance=instance, action="wagtail.delete")
instance.delete()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update(
{
"model_opts": self.model._meta,
"objects": self.objects,
"action_url": self.get_delete_url(),
}
)
return context
class UsageView(generic.UsageView):
view_name = "usage"
@ -807,7 +745,7 @@ class SnippetViewSet(ViewSet):
index_results_url_name=self.get_url_name("list_results"),
add_url_name=self.get_url_name("add"),
edit_url_name=self.get_url_name("edit"),
delete_multiple_url_name=self.get_url_name("delete-multiple"),
delete_url_name=self.get_url_name("delete"),
list_display=self.list_display,
)
@ -822,7 +760,7 @@ class SnippetViewSet(ViewSet):
index_results_url_name=self.get_url_name("list_results"),
add_url_name=self.get_url_name("add"),
edit_url_name=self.get_url_name("edit"),
delete_multiple_url_name=self.get_url_name("delete-multiple"),
delete_url_name=self.get_url_name("delete"),
list_display=self.list_display,
)
@ -864,7 +802,7 @@ class SnippetViewSet(ViewSet):
model=self.model,
permission_policy=self.permission_policy,
index_url_name=self.get_url_name("list"),
delete_multiple_url_name=self.get_url_name("delete-multiple"),
delete_url_name=self.get_url_name("delete"),
)
@property
@ -1066,7 +1004,6 @@ class SnippetViewSet(ViewSet):
path("results/", self.index_results_view, name="list_results"),
path("add/", self.add_view, name="add"),
path("edit/<str:pk>/", self.edit_view, name="edit"),
path("multiple/delete/", self.delete_view, name="delete-multiple"),
path("delete/<str:pk>/", self.delete_view, name="delete"),
path("usage/<str:pk>/", self.usage_view, name="usage"),
path("history/<str:pk>/", self.history_view, name="history"),