Skip to content

Commit

Permalink
Fixed #6147 -- Show pages in PageField only once, regardless of trans…
Browse files Browse the repository at this point in the history
…lations count (#6148)
  • Loading branch information
czpython committed Nov 20, 2017
1 parent a019a48 commit e9d419f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
1 change: 1 addition & 0 deletions cms/forms/utils.py
Expand Up @@ -57,6 +57,7 @@ def get_page_choices_for_site(site, language):
indent = "  " * (node.depth - 1)
label = mark_safe("%s%s" % (indent, escape(title)))
yield (node.page.pk, label)
break


def update_site_and_page_choices(language=None):
Expand Down
31 changes: 30 additions & 1 deletion cms/tests/test_forms.py
Expand Up @@ -7,7 +7,7 @@
from cms.admin.forms import (PagePermissionInlineAdminForm,
ViewRestrictionInlineAdminForm, GlobalPagePermissionAdminForm,
PageUserGroupForm)
from cms.api import create_page, assign_user_to_page
from cms.api import create_page, create_title, assign_user_to_page
from cms.forms.fields import PageSelectFormField, SuperLazyIterator

from cms.models import ACCESS_PAGE, ACCESS_PAGE_AND_CHILDREN
Expand All @@ -17,6 +17,8 @@
from cms.test_utils.testcases import (
CMSTestCase, URL_CMS_PAGE_PERMISSION_CHANGE, URL_CMS_PAGE_PERMISSIONS
)
from cms.utils import get_current_site
from cms.utils.i18n import force_language


class Mock_PageSelectFormField(PageSelectFormField):
Expand All @@ -40,6 +42,33 @@ def test_get_page_choices(self):
result = get_page_choices()
self.assertEqual(result, [('', '----')])

def test_get_page_choices_with_multiple_translations(self):
site = get_current_site()
pages = [
create_page("0001", "nav_playground.html", "en"),
create_page("0002", "nav_playground.html", "en"),
create_page("0003", "nav_playground.html", "en"),
create_page("0004", "nav_playground.html", "en"),
]
languages = ['de', 'fr']

for page in pages:
for language in languages:
title = page.get_title('en')
create_title(language, title, page=page)

for language in ['en'] + languages:
expected = [
('', '----'),
(site.name, [
(page.pk, page.get_title(language, fallback=False))
for page in pages
])
]

with force_language(language):
self.assertSequenceEqual(get_page_choices(), expected)

def test_get_site_choices_without_moderator(self):
result = get_site_choices()
self.assertEqual(result, [])
Expand Down

0 comments on commit e9d419f

Please sign in to comment.