Skip to content

Commit b4f54a5

Browse files
authored
fix: template tag get_admin_url_for_language did not return the latest page content (#7967)
* Fix: template tag `get_admin_url_for_language` should return the latest page content object for the language (even if unpublished) * Fix: correct read-only slug and overwrite url for page settings
1 parent 93f6fc5 commit b4f54a5

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

cms/admin/forms.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ def save(self, *args, **kwargs):
421421
)
422422

423423
if is_first and not new_page.is_page_type:
424-
# its the first page. Make it the homepage
424+
# it's the first page. Make it the homepage
425425
new_page.set_as_homepage(self._user)
426426

427427
send_post_page_operation(
@@ -542,7 +542,6 @@ class ChangePageForm(BasePageContentForm):
542542
coerce=int,
543543
empty_value=None,
544544
)
545-
546545
fieldsets = (
547546
(
548547
None,

cms/admin/pageadmin.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,20 @@ def get_form(self, request, obj=None, **kwargs):
899899
form._request = request
900900
return form
901901

902+
def slug(self, obj):
903+
# For read-only views: Get slug from the page
904+
if not hasattr(self, "url_obj"):
905+
self.url_obj = obj.page.get_url(obj.language)
906+
return self.url_obj.slug
907+
908+
def overwrite_url(self, obj):
909+
# For read-only views: Get slug from the page
910+
if not hasattr(self, "url_obj"):
911+
self.url_obj = obj.page.get_url(obj.language)
912+
if self.url_obj.managed:
913+
return None
914+
return self.url_obj.path
915+
902916
def duplicate(self, request, object_id):
903917
"""
904918
Leverages the add view logic to duplicate the page.

cms/templatetags/cms_admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class GetAdminUrlForLanguage(AsTag):
3535

3636
def get_value(self, context, page, language):
3737
if language in page.get_languages():
38-
page_content = page.pagecontent_set(manager="admin_manager").current_content(language=language).first()
38+
page_content = page.pagecontent_set(manager="admin_manager").latest_content(language=language).first()
3939
if page_content:
4040
return admin_reverse('cms_pagecontent_change', args=[page_content.pk])
4141
admin_url = admin_reverse('cms_pagecontent_add')

0 commit comments

Comments
 (0)