mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-10 13:00:16 +02:00
[FIX] Hide empty folders in menu
This commit is contained in:
parent
e0945fac80
commit
01cefe1457
@ -98,6 +98,10 @@ def render_menu(request: HttpRequest) -> List[RenderedMenuItem]:
|
|||||||
|
|
||||||
if item.is_app_item:
|
if item.is_app_item:
|
||||||
rendered_item = _render_app_item(request, hook_items, item, bs5_template)
|
rendered_item = _render_app_item(request, hook_items, item, bs5_template)
|
||||||
|
if rendered_item.html == "":
|
||||||
|
# If there is no content dont render it.
|
||||||
|
# This item has probably been hidden by permissions
|
||||||
|
continue
|
||||||
elif item.is_link_item:
|
elif item.is_link_item:
|
||||||
rendered_item = _render_link_item(request, item, bs5_template)
|
rendered_item = _render_link_item(request, item, bs5_template)
|
||||||
elif item.is_folder:
|
elif item.is_folder:
|
||||||
|
@ -19,6 +19,11 @@ def create_user(permissions=None, **kwargs) -> User:
|
|||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
def create_menu_item_hook_class(**kwargs) -> MenuItemHook:
|
||||||
|
num = next(counter_menu_item_hook)
|
||||||
|
return type(f"GeneratedMenuItem{num}", (MenuItemHook,), {})
|
||||||
|
|
||||||
|
|
||||||
def create_menu_item_hook(**kwargs) -> MenuItemHook:
|
def create_menu_item_hook(**kwargs) -> MenuItemHook:
|
||||||
num = next(counter_menu_item_hook)
|
num = next(counter_menu_item_hook)
|
||||||
new_class = type(f"GeneratedMenuItem{num}", (MenuItemHook,), {})
|
new_class = type(f"GeneratedMenuItem{num}", (MenuItemHook,), {})
|
||||||
|
@ -14,6 +14,7 @@ from allianceauth.menu.tests.factories import (
|
|||||||
create_folder_menu_item,
|
create_folder_menu_item,
|
||||||
create_link_menu_item,
|
create_link_menu_item,
|
||||||
create_menu_item_from_hook,
|
create_menu_item_from_hook,
|
||||||
|
create_menu_item_hook_class,
|
||||||
create_menu_item_hook_function,
|
create_menu_item_hook_function,
|
||||||
create_rendered_menu_item,
|
create_rendered_menu_item,
|
||||||
)
|
)
|
||||||
@ -177,6 +178,44 @@ class TestRenderDefaultMenu(TestCase):
|
|||||||
self.assertEqual(menu[0].menu_item.text, "Alpha")
|
self.assertEqual(menu[0].menu_item.text, "Alpha")
|
||||||
self.assertEqual(menu[1].menu_item.text, "Bravo")
|
self.assertEqual(menu[1].menu_item.text, "Bravo")
|
||||||
|
|
||||||
|
def test_should_remove_empty_folders_with_items_hidden(self, mock_get_hooks):
|
||||||
|
# given
|
||||||
|
|
||||||
|
class TestHook(create_menu_item_hook_class()):
|
||||||
|
text = "Dummy App No Data"
|
||||||
|
classes = "fa-solid fa-users-gear"
|
||||||
|
url_name = "groupmanagement:management"
|
||||||
|
|
||||||
|
def render(Self, request):
|
||||||
|
# simulate no perms
|
||||||
|
return ""
|
||||||
|
|
||||||
|
params = {
|
||||||
|
"text": "Alpha",
|
||||||
|
"classes": "fa-solid fa-users-gear",
|
||||||
|
"url_name": "groupmanagement:management",
|
||||||
|
}
|
||||||
|
|
||||||
|
alpha = TestHook(**params)
|
||||||
|
|
||||||
|
hooks = [lambda: alpha]
|
||||||
|
|
||||||
|
mock_get_hooks.return_value = hooks
|
||||||
|
|
||||||
|
folder = create_folder_menu_item(text="Folder", order=2)
|
||||||
|
create_menu_item_from_hook(hooks[0], parent=folder)
|
||||||
|
create_link_menu_item(text="Bravo", order=3) # this is all that should show
|
||||||
|
|
||||||
|
request = self.factory.get("/")
|
||||||
|
|
||||||
|
# when
|
||||||
|
result = render_menu(request)
|
||||||
|
|
||||||
|
# then
|
||||||
|
menu = list(result)
|
||||||
|
self.assertEqual(len(menu), 1)
|
||||||
|
self.assertEqual(menu[0].menu_item.text, "Bravo")
|
||||||
|
|
||||||
def test_should_not_include_hidden_items(self, mock_get_hooks):
|
def test_should_not_include_hidden_items(self, mock_get_hooks):
|
||||||
# given
|
# given
|
||||||
mock_get_hooks.return_value = []
|
mock_get_hooks.return_value = []
|
||||||
@ -196,7 +235,6 @@ class TestRenderDefaultMenu(TestCase):
|
|||||||
self.assertEqual(menu[1].menu_item.text, "Charlie")
|
self.assertEqual(menu[1].menu_item.text, "Charlie")
|
||||||
|
|
||||||
def test_should_not_render_hidden_folders(self, mock_get_hooks):
|
def test_should_not_render_hidden_folders(self, mock_get_hooks):
|
||||||
# given
|
|
||||||
# given
|
# given
|
||||||
menu = [
|
menu = [
|
||||||
create_menu_item_hook_function(text="Charlie", count=42),
|
create_menu_item_hook_function(text="Charlie", count=42),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user