Skip to content

Commit 3677eb2

Browse files
committed
Fix: Show fallback language titles in pagetree (#7955)
1 parent 298d772 commit 3677eb2

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

cms/admin/pageadmin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,7 +1145,7 @@ def changelist_view(self, request, extra_context=None):
11451145
Prefetch(
11461146
'pagecontent_set',
11471147
to_attr='filtered_translations',
1148-
queryset=self.get_queryset(request),
1148+
queryset=page_contents,
11491149
),
11501150
)
11511151

@@ -1388,7 +1388,7 @@ def get_tree(self, request):
13881388
Prefetch(
13891389
'pagecontent_set',
13901390
to_attr='filtered_translations',
1391-
queryset=self.get_queryset(request),
1391+
queryset=PageContent.admin_manager.get_queryset(),
13921392
),
13931393
)
13941394
rows = self.get_tree_rows(

cms/templates/admin/cms/page/tree/menu.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@
228228
{% block extra_cols %}{% endblock %}
229229
>
230230

231-
{% language LANGUAGE_CODE %}
231+
{% language preview_language %}
232232
{% get_page_display_name page %}
233233
{% endlanguage %}
234234

cms/templatetags/cms_admin.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -99,28 +99,32 @@ def get_page_display_name(cms_page):
9999
if not cms_page.page_content_cache:
100100
cms_page.set_translations_cache()
101101

102+
fallback_found = False
102103
if not cms_page.page_content_cache.get(language):
104+
fallback_found = True
103105
fallback_langs = i18n.get_fallback_languages(language)
104-
found = False
105106
for lang in fallback_langs:
106107
if cms_page.page_content_cache.get(lang):
107-
found = True
108108
language = lang
109-
if not found:
109+
break
110+
else:
110111
language = None
111112
for lang, item in cms_page.page_content_cache.items():
112113
if not isinstance(item, EmptyPageContent):
113114
language = lang
114-
if not language:
115-
return _("Empty")
115+
break
116+
else:
117+
return _("Empty")
116118
page_content = cms_page.page_content_cache[language]
117119
if page_content.title:
118-
return page_content.title
119-
if page_content.page_title:
120-
return page_content.page_title
121-
if page_content.menu_title:
122-
return page_content.menu_title
123-
return cms_page.get_slug(language)
120+
title = page_content.title
121+
elif page_content.page_title:
122+
title = page_content.page_title
123+
elif page_content.menu_title:
124+
title = page_content.menu_title
125+
else:
126+
title = cms_page.get_slug(language)
127+
return mark_safe(f"<em>{title} ({language})</em>") if fallback_found else title
124128

125129

126130
class TreePublishRow(Tag):

cms/tests/test_templatetags.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ def test_get_admin_tree_title(self):
8080
with self.settings(CMS_LANGUAGES=languages):
8181
with force_language('fr'):
8282
page.page_content_cache = {'en': PageContent(page_title="test2", title="test2")}
83-
self.assertEqual('test2', force_str(get_page_display_name(page)))
83+
self.assertEqual('<em>test2 (en)</em>', force_str(get_page_display_name(page)))
8484
page.page_content_cache = {'en': PageContent(page_title="test2")}
85-
self.assertEqual('test2', force_str(get_page_display_name(page)))
86-
page.page_content_cache = {'en': PageContent(menu_title="test2")}
87-
self.assertEqual('test2', force_str(get_page_display_name(page)))
85+
self.assertEqual('<em>test2 (en)</em>', force_str(get_page_display_name(page)))
86+
page.page_content_cache = {'en': PageContent(menu_title="menu test2")}
87+
self.assertEqual('<em>menu test2 (en)</em>', force_str(get_page_display_name(page)))
8888
page.page_content_cache = {'en': PageContent()}
89-
page.urls_cache = {'en': PageUrl(slug='test2')}
90-
self.assertEqual('test2', force_str(get_page_display_name(page)))
89+
page.urls_cache = {'en': PageUrl(slug='slug-test2')}
90+
self.assertEqual('<em>slug-test2 (en)</em>', force_str(get_page_display_name(page)))
9191
page.page_content_cache = {'en': PageContent(), 'fr': EmptyPageContent('fr')}
92-
self.assertEqual('test2', force_str(get_page_display_name(page)))
92+
self.assertEqual('<em>slug-test2 (en)</em>', force_str(get_page_display_name(page)))
9393

9494
def test_get_site_id_from_nothing(self):
9595
with self.settings(SITE_ID=10):

0 commit comments

Comments
 (0)