Skip to content

Commit 6811a2b

Browse files
committed
Small refactor
1 parent a9c12e3 commit 6811a2b

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

cms/cms_menus.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from django.db.models.query import Prefetch, prefetch_related_objects
22
from django.urls import reverse
33
from django.utils.functional import SimpleLazyObject
4+
from django.utils.translation import override as force_language
45

56
from cms import constants
67
from cms.apphook_pool import apphook_pool
78
from cms.models import EmptyPageContent, PageContent, PageUrl
89
from cms.toolbar.utils import get_object_preview_url, get_toolbar_from_request
910
from cms.utils.conf import get_cms_setting
1011
from cms.utils.i18n import (
11-
force_language,
1212
get_fallback_languages,
1313
get_public_languages,
1414
hide_untranslated,
@@ -66,7 +66,6 @@ def user_can_see_page(page):
6666
if perm.user_id == user_id or perm.group_id in user_groups:
6767
return True
6868
return False
69-
7069
return [page for page in pages if user_can_see_page(page)]
7170

7271

@@ -153,6 +152,7 @@ def get_menu_node_for_page(renderer, page, language, fallbacks=None, url=""):
153152

154153

155154
class CMSNavigationNode(NavigationNode):
155+
156156
def __init__(self, *args, **kwargs):
157157
self.path = kwargs.pop('path')
158158
# language is only used when we're dealing with a fallback
@@ -232,12 +232,16 @@ def get_nodes(self, request):
232232
to_attr="filtered_urls",
233233
queryset=PageUrl.objects.filter(language__in=languages),
234234
)
235+
if toolbar.edit_mode_active or toolbar.preview_mode_active:
236+
# Get all translations visible in the admin for the current page
237+
translations_qs = PageContent.admin_manager.current_content(language__in=languages)
238+
else:
239+
# Only get public translations
240+
translations_qs = PageContent.objects.filter(language__in=languages)
235241
translations_lookup = Prefetch(
236242
"pagecontent_set",
237243
to_attr="filtered_translations",
238-
queryset=PageContent.admin_manager.current_content(language__in=languages)
239-
if toolbar.edit_mode_active or toolbar.preview_mode_active
240-
else PageContent.objects.filter(language__in=languages),
244+
queryset=translations_qs,
241245
)
242246
prefetch_related_objects(pages, urls_lookup, translations_lookup)
243247
# Build the blank title instances only once
@@ -258,6 +262,7 @@ def _page_to_node(page):
258262
page.page_content_cache[trans.language] = trans
259263

260264
if toolbar.preview_mode_active or toolbar.edit_mode_active:
265+
# Override URL to link to preview endpoint
261266
url = get_object_preview_url(page.page_content_cache.get(lang))
262267
else:
263268
url = ""

0 commit comments

Comments
 (0)