Skip to content
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Testing

To run all the tests the only thing you need to do is run::

pip install -r tests/requirements.txt
pip install -r tests/requirements/requirements_base.txt
python test_settings.py


Expand Down
7 changes: 6 additions & 1 deletion djangocms_versioning/cms_toolbars.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,43 @@
from __future__ import annotations

from collections import OrderedDict
from copy import copy

from cms import __version__ as cms_version
from cms.cms_toolbars import (
ADD_PAGE_LANGUAGE_BREAK,
LANGUAGE_MENU_IDENTIFIER,
BasicToolbar,
PageToolbar,
PlaceholderToolbar,
)
from cms.constants import REFRESH_PAGE
from cms.models import PageContent
from cms.toolbar.items import RIGHT, Break, ButtonList, TemplateItem
from cms.toolbar.utils import get_object_preview_url
from cms.toolbar_pool import toolbar_pool
from cms.utils import page_permissions
from cms.utils.conf import get_cms_setting
from cms.utils.i18n import get_language_dict, get_language_tuple
from cms.utils.urlutils import add_url_parameters, admin_reverse
from django.apps import apps
from django.conf import settings
from django.contrib.auth import get_permission_codename
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from django.utils.http import urlencode
from django.utils.translation import gettext_lazy as _
from packaging import version

from djangocms_versioning.conf import ALLOW_DELETING_VERSIONS, LOCK_VERSIONS
from djangocms_versioning.constants import DRAFT
from djangocms_versioning.helpers import (
get_latest_admin_viewable_content,
version_list_url,
)
from djangocms_versioning.models import Version

Check failure on line 38 in djangocms_versioning/cms_toolbars.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (I001)

djangocms_versioning/cms_toolbars.py:1:1: I001 Import block is un-sorted or un-formatted


VERSIONING_MENU_IDENTIFIER = "version"
CMS_SUPPORTS_DELETING_TRANSLATIONS = version.Version(cms_version) > version.Version("4.1.4")
CMS_ADDS_PREVIEW_BUTTON = version.Version(cms_version) >= version.Version("4.2")
Expand Down Expand Up @@ -448,11 +449,15 @@
return

languages = get_language_tuple(self.current_site.pk)
page_languages = self.request.current_page.get_languages()
if len(languages) < 2:
return # No need to show the language menu if there is only one language

if len(page_languages) < 2:
return # No need to show language menu if current page has one language

language_menu = self.toolbar.get_or_create_menu(
LANGUAGE_MENU_IDENTIFIER, _("Language"), position=-1
LANGUAGE_MENU_IDENTIFIER, _("Languages"), position=-1
)
for code, name in languages:
# Get the page content, it could be draft too!
Expand Down
15 changes: 12 additions & 3 deletions tests/test_toolbars.py
Original file line number Diff line number Diff line change
Expand Up @@ -497,17 +497,25 @@

@override_settings(CMS_LANGUAGES = {1: [{"code": "en", "name": "English"}]})
def test_change_language_menu_page_toolbar_one_languages(self):
page_content = PageContentWithVersionFactory()
page_content = PageContentWithVersionFactory(language="en")
page = page_content.page

page.update_languages(["en"])

request = self.get_page_request(
page=page_content.page,
page=page,
path=get_object_edit_url(page_content),
user=self.get_superuser(),
)
request.toolbar.set_object(page_content)
request.toolbar.populate()
request.toolbar.post_template_populate()

language_menu = request.toolbar.get_menu(LANGUAGE_MENU_IDENTIFIER)
self.assertIsNone(language_menu)
self.assertIsNone(
language_menu,
"Language menu should not be created if the page has only one language."
)

def test_change_language_menu_page_toolbar(self):
"""Check that patched PageToolbar.change_language_menu only provides
Expand Down Expand Up @@ -556,6 +564,7 @@
lang_code = "fr" if "Française" in item.name else "it"
self.assertIn(f"language={lang_code}", item.url)


Check failure on line 567 in tests/test_toolbars.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W293)

tests/test_toolbars.py:567:1: W293 Blank line contains whitespace
@skipIf(cms_version <= Version("4.1.4"), "For CMS 4.1.5 and bove: Add delete translation menu")
def test_change_language_menu_page_toolbar_including_delete(self):
"""Check that patched PageToolbar.change_language_menu also provides
Expand Down
Loading