kopia lustrzana https://github.com/wagtail/wagtail
Make title and slug optional in page previews
rodzic
9eac93a565
commit
d3341e8fa7
|
@ -173,7 +173,10 @@ class TestPreview(WagtailTestUtils, TestCase):
|
|||
)
|
||||
self.assertNotIn(preview_session_key, self.client.session)
|
||||
|
||||
response = self.client.post(preview_url, {**self.post_data, "title": ""})
|
||||
response = self.client.post(
|
||||
preview_url,
|
||||
{**self.post_data, "date_from": "2025-02-31"},
|
||||
)
|
||||
|
||||
# Check the JSON response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
@ -311,6 +314,51 @@ class TestPreview(WagtailTestUtils, TestCase):
|
|||
self.assertTemplateUsed(response, "tests/event_page.html")
|
||||
self.assertContains(response, "Bare minimum")
|
||||
|
||||
def test_preview_on_create_without_title_and_slug(self):
|
||||
preview_url = reverse(
|
||||
"wagtailadmin_pages:preview_on_add",
|
||||
args=("tests", "eventpage", self.home_page.id),
|
||||
)
|
||||
|
||||
preview_session_key = "wagtail-preview-tests-eventpage-{}".format(
|
||||
self.home_page.id
|
||||
)
|
||||
self.assertNotIn(preview_session_key, self.client.session)
|
||||
|
||||
response = self.client.post(
|
||||
preview_url,
|
||||
{
|
||||
"carousel_items-TOTAL_FORMS": 0,
|
||||
"carousel_items-INITIAL_FORMS": 0,
|
||||
"speakers-TOTAL_FORMS": 0,
|
||||
"speakers-INITIAL_FORMS": 0,
|
||||
"related_links-TOTAL_FORMS": 0,
|
||||
"related_links-INITIAL_FORMS": 0,
|
||||
"head_counts-TOTAL_FORMS": 0,
|
||||
"head_counts-INITIAL_FORMS": 0,
|
||||
},
|
||||
)
|
||||
|
||||
# Check the JSON response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertJSONEqual(
|
||||
response.content.decode(),
|
||||
{"is_valid": True, "is_available": True},
|
||||
)
|
||||
|
||||
# Check the user can refresh the preview
|
||||
preview_session_key = "wagtail-preview-tests-eventpage-{}".format(
|
||||
self.home_page.id
|
||||
)
|
||||
self.assertIn(preview_session_key, self.client.session)
|
||||
|
||||
response = self.client.get(preview_url)
|
||||
|
||||
# Check the HTML response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "tests/event_page.html")
|
||||
self.assertContains(response, "Placeholder title")
|
||||
|
||||
def test_preview_on_edit_with_m2m_field(self):
|
||||
preview_url = reverse(
|
||||
"wagtailadmin_pages:preview_on_edit", args=(self.event_page.id,)
|
||||
|
@ -381,7 +429,10 @@ class TestPreview(WagtailTestUtils, TestCase):
|
|||
)
|
||||
|
||||
# Send an invalid update request
|
||||
response = self.client.post(preview_url, {**self.post_data, "title": ""})
|
||||
response = self.client.post(
|
||||
preview_url,
|
||||
{**self.post_data, "date_to": "1234-56-78"},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertJSONEqual(
|
||||
response.content.decode(),
|
||||
|
@ -440,6 +491,43 @@ class TestPreview(WagtailTestUtils, TestCase):
|
|||
self.assertTemplateUsed(response, "tests/event_page.html")
|
||||
self.assertContains(response, "Bare minimum")
|
||||
|
||||
def test_preview_on_edit_without_title_and_slug(self):
|
||||
preview_url = reverse(
|
||||
"wagtailadmin_pages:preview_on_edit", args=(self.event_page.id,)
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
preview_url,
|
||||
{
|
||||
"carousel_items-TOTAL_FORMS": 0,
|
||||
"carousel_items-INITIAL_FORMS": 0,
|
||||
"speakers-TOTAL_FORMS": 0,
|
||||
"speakers-INITIAL_FORMS": 0,
|
||||
"related_links-TOTAL_FORMS": 0,
|
||||
"related_links-INITIAL_FORMS": 0,
|
||||
"head_counts-TOTAL_FORMS": 0,
|
||||
"head_counts-INITIAL_FORMS": 0,
|
||||
},
|
||||
)
|
||||
|
||||
# Check the JSON response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertJSONEqual(
|
||||
response.content.decode(),
|
||||
{"is_valid": True, "is_available": True},
|
||||
)
|
||||
|
||||
# Check the user can refresh the preview
|
||||
preview_session_key = f"wagtail-preview-{self.event_page.id}"
|
||||
self.assertIn(preview_session_key, self.client.session)
|
||||
|
||||
response = self.client.get(preview_url)
|
||||
|
||||
# Check the HTML response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "tests/event_page.html")
|
||||
self.assertContains(response, "Placeholder title")
|
||||
|
||||
def test_preview_on_edit_expiry(self):
|
||||
initial_datetime = timezone.now()
|
||||
expiry_datetime = initial_datetime + datetime.timedelta(
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
import uuid
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.translation import gettext
|
||||
|
||||
from wagtail.admin.views.generic.preview import PreviewOnEdit as GenericPreviewOnEdit
|
||||
from wagtail.models import Page
|
||||
|
@ -43,6 +46,16 @@ class PreviewOnEdit(GenericPreviewOnEdit):
|
|||
for_user=self.request.user,
|
||||
)
|
||||
|
||||
query_dict = query_dict.copy()
|
||||
|
||||
if not query_dict.get("title"):
|
||||
query_dict["title"] = gettext("Placeholder title")
|
||||
|
||||
# Generate a random slug if one is not provided, use UUID to ensure
|
||||
# uniqueness without needing to hit the database
|
||||
if not query_dict.get("slug"):
|
||||
query_dict["slug"] = str(uuid.uuid4())
|
||||
|
||||
return form_class(
|
||||
query_dict,
|
||||
instance=self.object,
|
||||
|
|
Ładowanie…
Reference in New Issue