Skip to content

Commit

Permalink
Merge 7f021f4 into a8f2d9f
Browse files Browse the repository at this point in the history
  • Loading branch information
mekanics committed May 18, 2021
2 parents a8f2d9f + 7f021f4 commit d8ecde9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
5 changes: 2 additions & 3 deletions CHANGELOG.rst
Expand Up @@ -23,9 +23,8 @@ Unreleased
* Fixed missing builtin arguments on main ``cms`` management command causing it to crash
* Fixed template label nested translation
* Few changes in docs/contributing/code.rst
* Add support for Django 3.2 LTS version
* removed zh and zh_hans translation (keep zh_CN and zh_TW)
* Cleaned-up unmaintained translations
* Fixed a bug where the fallback page title whould be returned instead of the one from the current language


3.8.0 (2020-10-28)
==================
Expand Down
22 changes: 7 additions & 15 deletions cms/models/pagemodel.py
Expand Up @@ -1419,27 +1419,19 @@ def _get_title_cache(self, language, fallback, force_reload):

force_reload = (force_reload or language not in self.title_cache)

if fallback and not self.title_cache.get(language):
# language can be in the cache but might be an EmptyTitle instance
fallback_langs = i18n.get_fallback_languages(language)
for lang in fallback_langs:
if self.title_cache.get(lang):
return lang

if force_reload:
from cms.models.titlemodels import Title

titles = Title.objects.filter(page=self)
for title in titles:
self.title_cache[title.language] = title
if self.title_cache.get(language):
return language
else:
if fallback:
fallback_langs = i18n.get_fallback_languages(language)
for lang in fallback_langs:
if self.title_cache.get(lang):
return lang

if fallback and not self.title_cache.get(language):
fallback_langs = i18n.get_fallback_languages(language)
for lang in fallback_langs:
if self.title_cache.get(lang):
return lang

return language

def get_template(self):
Expand Down
21 changes: 21 additions & 0 deletions cms/tests/test_extensions.py
Expand Up @@ -319,6 +319,27 @@ def test_publish_mutlitable_title_extension(self):
title_extension.delete()
self.assertFalse(MultiTableTitleExtension.objects.filter(pk=title_extension.pk).exists())

def test_fallback_title_extension(self):
page = create_page('Test Fallback Title Extension', "nav_playground.html", "en")
title_en = page.get_title_obj('en')
title_extension_en = MyTitleExtension(extended_object=title_en,
extra_title='title extension EN')
title_extension_en.save()
page.publish('en')

self.assertEqual(page.get_title_obj('en', True).mytitleextension.extra_title,
'title extension EN')

title_de = create_title(title="de page", language="de", page=page)
title_extension_de = MyTitleExtension(extended_object=title_de,
extra_title='title extension DE')
title_extension_de.save()
page.publish('de')

self.assertEqual(page.get_title_obj('de', True).mytitleextension.extra_title,
'title extension DE')


class ExtensionAdminTestCase(CMSTestCase):

def setUp(self):
Expand Down

0 comments on commit d8ecde9

Please sign in to comment.