8000 fix: added redirect message when in editing a redirect toolbar object… · django-cms/django-cms@a471c35 · GitHub
[go: up one dir, main page]

Skip to content

Commit a471c35

Browse files
theShinigamiGithub Release Action
authored andcommitted
fix: added redirect message when in editing a redirect toolbar object (#8056)
* fix: add redirect notification page when in edit mode * refactor(details): remove setting of redirect_url * test: add test to verify message display when redirect is set * refactor: remove unused variable from details view
1 parent 62bc268 commit a471c35

File tree

2 files changed

+28
-3
lines changed
  • cms
    • tests

2 files changed

+28
-3
lines changed

cms/tests/test_views.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,28 @@ def test_apphook_not_hooked(self):
101101
self.assertEqual(response.status_code, 200)
102102
self.apphook_clear()
103103

104+
def test_redirect_preview_in_edit_mode(self):
105+
106+
user = self.get_superuser()
107+
page = create_page("page", "nav_playground.html", "fr")
108+
page_content = create_page_content("en", "home", page, redirect="https://example.com")
109+
110+
page.set_as_homepage()
111+
112+
with self.login_user_context(user), force_language('fr'):
113+
edit_url = get_object_edit_url(page_content, language='fr')
114+
response = self.client.get(edit_url, follow=True)
115+
116+
expected = f"""
117+
<div class="cms-screenblock">
118+
<div class="cms-screenblock-inner">
119+
<h1>This page has no preview!</h1>
120+
<p>It is being redirected to: <a href="{page_content.redirect}">{page_content.redirect}</a></p>
121+
</div>
122+
</div>
123+
"""
124+
self.assertContains(response, expected, count=1, html=True)
125+
104126
def test_external_redirect(self):
105127
# test external redirect
106128
redirect_one = 'https://www.django-cms.org/'

cms/views.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,7 @@ def details(request, slug):
200200
redirect_url = _clean_redirect_url(redirect_url, request_language)
201201

202202
if redirect_url:
203-
if request.user.is_staff and toolbar.edit_mode_active:
204-
toolbar.redirect_url = redirect_url
205-
elif redirect_url not in own_urls:
203+
if redirect_url not in own_urls:
206204
if get_cms_setting('REDIRECT_PRESERVE_QUERY_PARAMS'):
207205
query_string = request.META.get('QUERY_STRING')
208206
if query_string:
@@ -324,6 +322,11 @@ def render_object_endpoint(request, content_type_id, object_id, require_editable
324322
toolbar = get_toolbar_from_request(request)
325323
toolbar.set_object(content_type_obj)
326324

325+
if request.user.is_staff and toolbar.edit_mode_active:
326+
redirect = getattr(content_type_obj, "redirect", None)
327+
if isinstance(redirect, str):
328+
toolbar.redirect_url = redirect
329+
327330
if require_editable and not toolbar.object_is_editable():
328331
# If not editable, switch from edit to preview endpoint
329332
return HttpResponseRedirect(get_object_preview_url(content_type_obj))

0 commit comments

Comments
 (0)
0