Explicitly specify `MenuItem.name` for Snippets, Reports, and Settings menu items (#10270)

pull/10279/head
Sage Abdullah 2023-03-27 10:31:23 +01:00 zatwierdzone przez Matt Westcott
rodzic 27459d61ce
commit d1a668a3b1
5 zmienionych plików z 54 dodań i 4 usunięć

Wyświetl plik

@ -28,6 +28,7 @@ Changelog
* Re-label "StreamField blocks" option in block picker to "Blocks" (Thibaud Colas)
* Re-implement styleguide icons list as an auto-generated sequence of tables (Thibaud Colas)
* Switch styleguide navigation to use panel components and minimap (Thibaud Colas)
* Explicitly specify `MenuItem.name` for Snippets, Reports, and Settings menu items (Sage Abdullah)
* Fix: Ensure `label_format` on StructBlock gracefully handles missing variables (Aadi jindal)
* Fix: Adopt a no-JavaScript and more accessible solution for the 'Reset to default' switch to Gravatar when editing user profile (Loveth Omokaro)
* Fix: Ensure `Site.get_site_root_paths` works on cache backends that do not preserve Python objects (Jaap Roes)

Wyświetl plik

@ -43,6 +43,7 @@ Support for adding custom validation logic to StreamField blocks has been formal
* Re-label "StreamField blocks" option in block picker to "Blocks" (Thibaud Colas)
* Re-implement styleguide icons list as an auto-generated sequence of tables (Thibaud Colas)
* Switch styleguide navigation to use panel components and minimap (Thibaud Colas)
* Explicitly specify `MenuItem.name` for Snippets, Reports, and Settings menu items (Sage Abdullah)
### Bug fixes

Wyświetl plik

@ -1,5 +1,6 @@
from django.test import RequestFactory, TestCase
from django.urls import reverse
from django.utils import translation
from wagtail import hooks
from wagtail.admin.menu import (
@ -9,6 +10,7 @@ from wagtail.admin.menu import (
Menu,
MenuItem,
SubmenuMenuItem,
admin_menu,
)
from wagtail.admin.ui import sidebar
from wagtail.test.utils import WagtailTestUtils
@ -315,3 +317,33 @@ class TestMenuRendering(WagtailTestUtils, TestCase):
sidebar.LinkMenuItem("pages", "Pages", "/pages/"),
],
)
def test_menu_items_have_names(self):
# Delete the registered_menu_items cache
try:
del admin_menu.registered_menu_items
# The cache may not be created yet if the test is run in isolation
except AttributeError:
pass
# Generate the menu items using a different language
with translation.override("fr"):
names = {item.name for item in admin_menu.registered_menu_items}
# Default menu items
expected = {
"explorer",
"images",
"documents",
"snippets",
"forms",
"reports",
"settings",
"help",
}
# If some of the above items do not have a name, they will be
# automatically generated from the label, which is translatable.
# We want the name to be consistent across languages, so this test will
# fail if the label is translated.
self.assertFalse(expected - names)

Wyświetl plik

@ -120,7 +120,13 @@ class SettingsMenuItem(SubmenuMenuItem):
@hooks.register("register_admin_menu_item")
def register_settings_menu():
return SettingsMenuItem(_("Settings"), settings_menu, icon_name="cogs", order=10000)
return SettingsMenuItem(
_("Settings"),
settings_menu,
name="settings",
icon_name="cogs",
order=10000,
)
@hooks.register("register_permissions")
@ -969,7 +975,13 @@ def register_aging_pages_report_menu_item():
@hooks.register("register_admin_menu_item")
def register_reports_menu():
return SubmenuMenuItem(_("Reports"), reports_menu, icon_name="site", order=9000)
return SubmenuMenuItem(
_("Reports"),
reports_menu,
name="reports",
icon_name="site",
order=9000,
)
@hooks.register("register_help_menu_item")
@ -1002,9 +1014,9 @@ def register_help_menu():
return DismissibleSubmenuMenuItem(
_("Help"),
help_menu,
name="help",
icon_name="help",
order=11000,
name="help",
)

Wyświetl plik

@ -39,7 +39,11 @@ class SnippetsMenuItem(MenuItem):
@hooks.register("register_admin_menu_item")
def register_snippets_menu_item():
return SnippetsMenuItem(
_("Snippets"), reverse("wagtailsnippets:index"), icon_name="snippet", order=500
_("Snippets"),
reverse("wagtailsnippets:index"),
name="snippets",
icon_name="snippet",
order=500,
)