Fix session key generation for wagtail previews (#7393)

Fixes #7392
pull/7462/head
Alex Tomkins 2021-08-03 19:27:53 +01:00 zatwierdzone przez Matt Westcott
rodzic 90c86e76d0
commit c825261bd1
4 zmienionych plików z 20 dodań i 1 usunięć

Wyświetl plik

@ -15,6 +15,7 @@ Changelog
* Fix: InlinePanel add button is now keyboard navigatable (Jesse Menn)
* Fix: Remove redundant 'clear' button from site root page chooser (Matt Westcott)
* Fix: Make ModelAdmin IndexView keyboard-navigable (Saptak Sengupta)
* Fix: Prevent error on refreshing page previews when multiple preview tabs are open (Alex Tomkins)
2.14.1 (12.08.2021)

Wyświetl plik

@ -31,6 +31,7 @@ Bug fixes
* InlinePanel add button is now keyboard navigatable (Jesse Menn)
* Remove redundant 'clear' button from site root page chooser (Matt Westcott)
* Make ModelAdmin IndexView keyboard-navigable (Saptak Sengupta)
* Prevent error on refreshing page previews when multiple preview tabs are open (Alex Tomkins)
Upgrade considerations
======================

Wyświetl plik

@ -112,6 +112,10 @@ class TestPreview(TestCase, WagtailTestUtils):
self.assertEqual(response.status_code, 200)
self.assertJSONEqual(response.content.decode(), {'is_valid': True})
# Check the user can refresh the preview
preview_session_key = 'wagtail-preview-tests-eventpage-{}'.format(self.home_page.id)
self.assertTrue(preview_session_key in self.client.session)
response = self.client.get(preview_url)
# Check the HTML response
@ -130,6 +134,10 @@ class TestPreview(TestCase, WagtailTestUtils):
self.assertEqual(response.status_code, 200)
self.assertJSONEqual(response.content.decode(), {'is_valid': True})
# Check the user can refresh the preview
preview_session_key = 'wagtail-preview-{}'.format(self.event_page.id)
self.assertTrue(preview_session_key in self.client.session)
response = self.client.get(preview_url)
# Check the HTML response

Wyświetl plik

@ -41,7 +41,7 @@ class PreviewOnEdit(View):
@property
def session_key(self):
return self.session_key_prefix + ','.join(self.args)
return '{}{}'.format(self.session_key_prefix, self.kwargs['page_id'])
def get_page(self):
return get_object_or_404(Page,
@ -93,6 +93,15 @@ class PreviewOnEdit(View):
class PreviewOnCreate(PreviewOnEdit):
@property
def session_key(self):
return '{}{}-{}-{}'.format(
self.session_key_prefix,
self.kwargs['content_type_app_name'],
self.kwargs['content_type_model_name'],
self.kwargs['parent_page_id'],
)
def get_page(self):
content_type_app_name = self.kwargs["content_type_app_name"]
content_type_model_name = self.kwargs["content_type_model_name"]