Fix generic CopyView for models with primary keys that need to be quoted

pull/11823/head
Sage Abdullah 2024-04-08 14:56:18 +07:00
rodzic 4ed5aa09d1
commit e3d9233f4d
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: EB1A33CC51CC0217
2 zmienionych plików z 7 dodań i 11 usunięć

Wyświetl plik

@ -6,7 +6,7 @@ from django.contrib.admin.utils import quote
from django.contrib.auth import get_permission_codename
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.test import RequestFactory, TestCase
from django.test import TestCase
from django.urls import NoReverseMatch, reverse
from django.utils.formats import date_format, localize
from django.utils.html import escape
@ -22,7 +22,6 @@ from wagtail.test.testapp.models import (
SearchTestModel,
VariousOnDeleteModel,
)
from wagtail.test.testapp.views import FCToyAlt1ViewSet
from wagtail.test.utils.template_tests import AdminTemplateTestUtils
from wagtail.test.utils.wagtail_tests import WagtailTestUtils
from wagtail.utils.deprecation import RemovedInWagtail70Warning
@ -1532,14 +1531,11 @@ class TestCopyView(WagtailTestUtils, TestCase):
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_form_is_prefilled(self):
request = RequestFactory().get(self.url)
request.user = self.user
view = FCToyAlt1ViewSet().copy_view_class()
view.setup(request)
view.model = self.object.__class__
view.kwargs = {"pk": self.object.pk}
self.assertEqual(view.get_form_kwargs()["instance"], self.object)
response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
soup = self.get_soup(response.content)
name_input = soup.select_one('input[name="name"]')
self.assertEqual(name_input.attrs.get("value"), "Test Toy")
class TestEditHandler(WagtailTestUtils, TestCase):

Wyświetl plik

@ -671,7 +671,7 @@ class CreateView(
class CopyView(CreateView):
def get_object(self, queryset=None):
return get_object_or_404(self.model, pk=self.kwargs["pk"])
return get_object_or_404(self.model, pk=unquote(str(self.kwargs["pk"])))
def get_form_kwargs(self):
return {**super().get_form_kwargs(), "instance": self.get_object()}