def get_global_navigation(request): url = request.resolver_match if not url: return [] has_staff_session = request.user.has_active_staff_session( request.session.session_key) nav = [ { 'label': _('Dashboard'), 'url': reverse('control:index'), 'active': (url.url_name == 'index'), 'icon': 'dashboard', }, { 'label': _('Events'), 'url': reverse('control:events'), 'active': 'events' in url.url_name, 'icon': 'calendar', }, { 'label': _('Organizers'), 'url': reverse('control:organizers'), 'active': 'organizers' in url.url_name, 'icon': 'group', }, { 'label': _('Order search'), 'url': reverse('control:search.orders'), 'active': 'search.orders' in url.url_name, 'icon': 'search', }, { 'label': _('User settings'), 'url': reverse('control:user.settings'), 'active': False, 'icon': 'user', 'children': [ { 'label': _('General'), 'url': reverse('control:user.settings'), 'active': 'user.settings' == url.url_name, }, { 'label': _('Notifications'), 'url': reverse('control:user.settings.notifications'), 'active': 'user.settings.notifications' == url.url_name, }, { 'label': _('2FA'), 'url': reverse('control:user.settings.2fa'), 'active': 'user.settings.2fa' in url.url_name, }, { 'label': _('Authorized apps'), 'url': reverse('control:user.settings.oauth.list'), 'active': 'user.settings.oauth' in url.url_name, }, { 'label': _('Account history'), 'url': reverse('control:user.settings.history'), 'active': 'user.settings.history' in url.url_name, }, ] }, ] if has_staff_session: nav.append({ 'label': _('Users'), 'url': reverse('control:users'), 'active': False, 'icon': 'user', 'children': [ { 'label': _('All users'), 'url': reverse('control:users'), 'active': ('users' in url.url_name), }, { 'label': _('Admin sessions'), 'url': reverse('control:user.sudo.list'), 'active': ('sudo' in url.url_name), }, ] }) nav.append({ 'label': _('Global settings'), 'url': reverse('control:global.settings'), 'active': False, 'icon': 'wrench', 'children': [ { 'label': _('Settings'), 'url': reverse('control:global.settings'), 'active': (url.url_name == 'global.settings'), }, { 'label': _('Update check'), 'url': reverse('control:global.update'), 'active': (url.url_name == 'global.update'), }, ] }) merge_in( nav, sorted(sum((list(a[1]) for a in nav_global.send(request, request=request)), []), key=lambda r: r['label'])) return nav
def get_global_navigation(request): url = request.resolver_match if not url: return [] has_staff_session = request.user.has_active_staff_session(request.session.session_key) nav = [ { 'label': _('Dashboard'), 'url': reverse('control:index'), 'active': (url.url_name == 'index'), 'icon': 'dashboard', }, { 'label': _('Events'), 'url': reverse('control:events'), 'active': 'events' in url.url_name, 'icon': 'calendar', }, { 'label': _('Organizers'), 'url': reverse('control:organizers'), 'active': 'organizers' in url.url_name, 'icon': 'group', }, { 'label': _('Order search'), 'url': reverse('control:search.orders'), 'active': 'search.orders' in url.url_name, 'icon': 'search', }, { 'label': _('User settings'), 'url': reverse('control:user.settings'), 'active': False, 'icon': 'user', 'children': [ { 'label': _('General'), 'url': reverse('control:user.settings'), 'active': 'user.settings' == url.url_name, }, { 'label': _('Notifications'), 'url': reverse('control:user.settings.notifications'), 'active': 'user.settings.notifications' == url.url_name, }, { 'label': _('2FA'), 'url': reverse('control:user.settings.2fa'), 'active': 'user.settings.2fa' in url.url_name, }, { 'label': _('Authorized apps'), 'url': reverse('control:user.settings.oauth.list'), 'active': 'user.settings.oauth' in url.url_name, }, { 'label': _('Account history'), 'url': reverse('control:user.settings.history'), 'active': 'user.settings.history' in url.url_name, }, ] }, ] if has_staff_session: nav.append({ 'label': _('Users'), 'url': reverse('control:users'), 'active': False, 'icon': 'user', 'children': [ { 'label': _('All users'), 'url': reverse('control:users'), 'active': ('users' in url.url_name), }, { 'label': _('Admin sessions'), 'url': reverse('control:user.sudo.list'), 'active': ('sudo' in url.url_name), }, ] }) nav.append({ 'label': _('Global settings'), 'url': reverse('control:global.settings'), 'active': False, 'icon': 'wrench', 'children': [ { 'label': _('Settings'), 'url': reverse('control:global.settings'), 'active': (url.url_name == 'global.settings'), }, { 'label': _('Update check'), 'url': reverse('control:global.update'), 'active': (url.url_name == 'global.update'), }, ] }) merge_in(nav, sorted( sum((list(a[1]) for a in nav_global.send(request, request=request)), []), key=lambda r: r['label'] )) return nav