rohitsrma 2024-04-24 21:34:37 +05:30
rodzic 7d7ad7186a
commit 4ff0179080
5 zmienionych plików z 50 dodań i 18 usunięć

Wyświetl plik

@ -716,9 +716,9 @@ class EditView(
return self.actions
def get_object(self, queryset=None):
if "pk" not in self.kwargs:
self.kwargs["pk"] = self.args[0]
self.kwargs["pk"] = unquote(str(self.kwargs["pk"]))
if self.pk_url_kwarg not in self.kwargs:
self.kwargs[self.pk_url_kwarg] = self.args[0]
self.kwargs[self.pk_url_kwarg] = unquote(str(self.kwargs[self.pk_url_kwarg]))
return super().get_object(queryset)
def get_page_subtitle(self):

Wyświetl plik

@ -0,0 +1 @@
{% extends "wagtailadmin/generic/edit.html" %}

Wyświetl plik

@ -1,4 +1,5 @@
from django.conf import settings
from django.contrib.auth.models import Permission
from django.test import TestCase, override_settings
from django.urls import reverse
@ -875,7 +876,7 @@ class TestRedirectsEditView(WagtailTestUtils, TestCase):
def test_simple(self):
response = self.get()
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailadmin/generic/edit.html")
self.assertTemplateUsed(response, "wagtailredirects/edit.html")
url_finder = AdminURLFinder(self.user)
expected_url = "/admin/redirects/%d/" % self.redirect.id
@ -957,6 +958,39 @@ class TestRedirectsEditView(WagtailTestUtils, TestCase):
# Should not redirect to index
self.assertEqual(response.status_code, 200)
def test_get_with_no_permission(self, redirect_id=None):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
)
)
response = self.get()
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_with_edit_permission_only(self):
self.user.is_superuser = False
self.user.save()
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
),
Permission.objects.get(
content_type__app_label="wagtailredirects",
codename="change_redirect",
),
)
response = self.get()
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailredirects/edit.html")
class TestRedirectsDeleteView(WagtailTestUtils, TestCase):
def setUp(self):

Wyświetl plik

@ -7,7 +7,7 @@ urlpatterns = [
path("", views.IndexView.as_view(), name="index"),
path("results/", views.IndexView.as_view(results_only=True), name="index_results"),
path("add/", views.add, name="add"),
path("<int:redirect_id>/", views.Edit.as_view(), name="edit"),
path("<int:redirect_id>/", views.EditView.as_view(), name="edit"),
path("<int:redirect_id>/delete/", views.delete, name="delete"),
path("import/", views.start_import, name="start_import"),
path("import/process/", views.process_import, name="process_import"),

Wyświetl plik

@ -127,24 +127,21 @@ class IndexView(generic.IndexView):
]
class Edit(generic.EditView):
model = models.Redirect
class EditView(generic.EditView):
model = Redirect
form_class = RedirectForm
template_name = "wagtailredirects/edit.html"
index_url_name = "wagtailredirects:index"
edit_url_name = "wagtailredirects:edit"
delete_url_name = "wagtailredirects:delete"
permission_required = "change_redirect"
delete_item_label = _("Delete")
submit_button_label = _("Save")
pk_url_kwarg = "redirect_id"
permission_policy = permission_policy
error_message = gettext_lazy("The redirect could not be saved due to errors.")
def get_object(self, queryset=None):
redirect_id = self.kwargs.get("redirect_id")
return get_object_or_404(self.model, id=redirect_id)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["redirect"] = self.object
return context
def get_success_message(self):
return _("Redirect '%(redirect_title)s' updated.") % {
"redirect_title": self.object.title
}
@permission_checker.require("delete")