Пример #1
0
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
Пример #2
0
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