8000 Fix: Show fallback language titles in pagetree (#7955) · django-cms/django-cms@302c1b5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 302c1b5

Browse files
authored
Fix: Show fallback language titles in pagetree (#7955)
1 parent 5ed8102 commit 302c1b5

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
@@ -1144,7 +1144,7 @@ def changelist_view(self, request, extra_context=None):
11441144
Prefetch(
11451145
'pagecontent_set',
11461146
to_attr='filtered_translations',
1147-
queryset=self.get_queryset(request),
1147+
queryset=page_contents,
11481148
),
11491149
)
11501150

@@ -1381,7 +1381,7 @@ def get_tree(self, request):
13811381
Prefetch(
13821382
'pagecontent_set',
13831383
to_attr='filtered_translations',
1384-
queryset=self.get_queryset(request),
1384+
queryset=PageContent.admin_manager.get_queryset(),
13851385
),
13861386
)
13871387
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-
57AE 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)
0