Esempio n. 1
0
def get_event_navigation(request: HttpRequest):
    url = request.resolver_match
    if not url:
        return []
    nav = [{
        'label':
        _('Dashboard'),
        'url':
        reverse('control:event.index',
                kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
        'active': (url.url_name == 'event.index'),
        'icon':
        'dashboard',
    }]
    if 'can_change_event_settings' in request.eventpermset:
        event_settings = [
            {
                'label':
                _('General'),
                'url':
                reverse('control:event.settings',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings',
            },
            {
                'label':
                _('Payment'),
                'url':
                reverse('control:event.settings.payment',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.payment',
            },
            {
                'label':
                _('Plugins'),
                'url':
                reverse('control:event.settings.plugins',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.plugins',
            },
            {
                'label':
                _('Display'),
                'url':
                reverse('control:event.settings.display',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.display',
            },
            {
                'label':
                _('Tickets'),
                'url':
                reverse('control:event.settings.tickets',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.tickets',
            },
            {
                'label':
                _('E-mail'),
                'url':
                reverse('control:event.settings.mail',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.mail',
            },
            {
                'label':
                _('Tax rules'),
                'url':
                reverse('control:event.settings.tax',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.tax',
            },
            {
                'label':
                _('Invoicing'),
                'url':
                reverse('control:event.settings.invoice',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.invoice',
            },
            {
                'label':
                pgettext_lazy('action', 'Cancellation'),
                'url':
                reverse('control:event.settings.cancel',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.cancel',
            },
            {
                'label':
                _('Widget'),
                'url':
                reverse('control:event.settings.widget',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active':
                url.url_name == 'event.settings.widget',
            },
        ]
        event_settings += sorted(sum(
            (list(a[1])
             for a in nav_event_settings.send(request.event, request=request)),
            []),
                                 key=lambda r: r['label'])
        nav.append({
            'label':
            _('Settings'),
            'url':
            reverse('control:event.settings',
                    kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
            'active':
            False,
            'icon':
            'wrench',
            'children':
            event_settings
        })
        if request.event.has_subevents:
            nav.append({
                'label':
                pgettext_lazy('subevent', 'Dates'),
                'url':
                reverse('control:event.subevents',
                        kwargs={
                            'event': request.event.slug,
                            'organizer': request.event.organizer.slug,
                        }),
                'active': ('event.subevent' in url.url_name),
                'icon':
                'calendar',
            })

    if 'can_change_items' in request.eventpermset:
        nav.append({
            'label':
            _('Products'),
            'url':
            reverse('control:event.items',
                    kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
            'active':
            False,
            'icon':
            'ticket',
            'children': [
                {
                    'label':
                    _('Products'),
                    'url':
                    reverse('control:event.items',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    url.url_name
                    in ('event.item', 'event.items.add', 'event.items')
                    or "event.item." in url.url_name,
                },
                {
                    'label':
                    _('Quotas'),
                    'url':
                    reverse('control:event.items.quotas',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.items.quota' in url.url_name,
                },
                {
                    'label':
                    _('Categories'),
                    'url':
                    reverse('control:event.items.categories',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.items.categories' in url.url_name,
                },
                {
                    'label':
                    _('Questions'),
                    'url':
                    reverse('control:event.items.questions',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.items.questions' in url.url_name,
                },
            ]
        })

    if 'can_view_orders' in request.eventpermset:
        nav.append({
            'label':
            _('Orders'),
            'url':
            reverse('control:event.orders',
                    kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
            'active':
            False,
            'icon':
            'shopping-cart',
            'children': [
                {
                    'label':
                    _('All orders'),
                    'url':
                    reverse('control:event.orders',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    url.url_name in ('event.orders', 'event.order')
                    or "event.order." in url.url_name,
                },
                {
                    'label':
                    _('Overview'),
                    'url':
                    reverse('control:event.orders.overview',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.orders.overview' in url.url_name,
                },
                {
                    'label':
                    _('Refunds'),
                    'url':
                    reverse('control:event.orders.refunds',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.orders.refunds' in url.url_name,
                },
                {
                    'label':
                    _('Export'),
                    'url':
                    reverse('control:event.orders.export',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.orders.export' in url.url_name,
                },
                {
                    'label':
                    _('Waiting list'),
                    'url':
                    reverse('control:event.orders.waitinglist',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.orders.waitinglist' in url.url_name,
                },
            ]
        })

    if 'can_view_vouchers' in request.eventpermset:
        nav.append({
            'label':
            _('Vouchers'),
            'url':
            reverse('control:event.vouchers',
                    kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
            'active':
            False,
            'icon':
            'tags',
            'children': [
                {
                    'label':
                    _('All vouchers'),
                    'url':
                    reverse('control:event.vouchers',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    url.url_name != 'event.vouchers.tags'
                    and "event.vouchers" in url.url_name,
                },
                {
                    'label':
                    _('Tags'),
                    'url':
                    reverse('control:event.vouchers.tags',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.vouchers.tags' in url.url_name,
                },
            ]
        })

    if 'can_view_orders' in request.eventpermset:
        nav.append({
            'label':
            pgettext_lazy('navigation', 'Check-in'),
            'url':
            reverse('control:event.orders.checkinlists',
                    kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
            'active':
            False,
            'icon':
            'check-square-o',
            'children': [
                {
                    'label':
                    _('Check-in lists'),
                    'url':
                    reverse('control:event.orders.checkinlists',
                            kwargs={
                                'event': request.event.slug,
                                'organizer': request.event.organizer.slug,
                            }),
                    'active':
                    'event.orders.checkin' in url.url_name,
                },
            ]
        })

    merge_in(
        nav,
        sorted(sum((list(a[1])
                    for a in nav_event.send(request.event, request=request)),
                   []),
               key=lambda r: r['label']))

    return nav
Esempio n. 2
0
def get_event_navigation(request: HttpRequest):
    url = request.resolver_match
    if not url:
        return []
    nav = [
        {
            'label': _('Dashboard'),
            'url': reverse('control:event.index', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': (url.url_name == 'event.index'),
            'icon': 'dashboard',
        }
    ]
    if 'can_change_event_settings' in request.eventpermset:
        event_settings = [
            {
                'label': _('General'),
                'url': reverse('control:event.settings', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings',
            },
            {
                'label': _('Payment'),
                'url': reverse('control:event.settings.payment', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.payment',
            },
            {
                'label': _('Plugins'),
                'url': reverse('control:event.settings.plugins', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.plugins',
            },
            {
                'label': _('Display'),
                'url': reverse('control:event.settings.display', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.display',
            },
            {
                'label': _('Tickets'),
                'url': reverse('control:event.settings.tickets', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.tickets',
            },
            {
                'label': _('E-mail'),
                'url': reverse('control:event.settings.mail', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.mail',
            },
            {
                'label': _('Tax rules'),
                'url': reverse('control:event.settings.tax', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.tax',
            },
            {
                'label': _('Invoicing'),
                'url': reverse('control:event.settings.invoice', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.invoice',
            },
            {
                'label': _('Widget'),
                'url': reverse('control:event.settings.widget', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': url.url_name == 'event.settings.widget',
            },
        ]
        event_settings += sorted(
            sum((list(a[1]) for a in nav_event_settings.send(request.event, request=request)), []),
            key=lambda r: r['label']
        )
        nav.append({
            'label': _('Settings'),
            'url': reverse('control:event.settings', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': False,
            'icon': 'wrench',
            'children': event_settings
        })
        if request.event.has_subevents:
            nav.append({
                'label': pgettext_lazy('subevent', 'Dates'),
                'url': reverse('control:event.subevents', kwargs={
                    'event': request.event.slug,
                    'organizer': request.event.organizer.slug,
                }),
                'active': ('event.subevent' in url.url_name),
                'icon': 'calendar',
            })

    if 'can_change_items' in request.eventpermset:
        nav.append({
            'label': _('Products'),
            'url': reverse('control:event.items', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': False,
            'icon': 'ticket',
            'children': [
                {
                    'label': _('Products'),
                    'url': reverse('control:event.items', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': url.url_name in (
                        'event.item', 'event.items.add', 'event.items') or "event.item." in url.url_name,
                },
                {
                    'label': _('Quotas'),
                    'url': reverse('control:event.items.quotas', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.items.quota' in url.url_name,
                },
                {
                    'label': _('Categories'),
                    'url': reverse('control:event.items.categories', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.items.categories' in url.url_name,
                },
                {
                    'label': _('Questions'),
                    'url': reverse('control:event.items.questions', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.items.questions' in url.url_name,
                },
            ]
        })

    if 'can_view_orders' in request.eventpermset:
        nav.append({
            'label': _('Orders'),
            'url': reverse('control:event.orders', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': False,
            'icon': 'shopping-cart',
            'children': [
                {
                    'label': _('All orders'),
                    'url': reverse('control:event.orders', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': url.url_name in ('event.orders', 'event.order') or "event.order." in url.url_name,
                },
                {
                    'label': _('Overview'),
                    'url': reverse('control:event.orders.overview', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.orders.overview' in url.url_name,
                },
                {
                    'label': _('Refunds'),
                    'url': reverse('control:event.orders.refunds', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.orders.refunds' in url.url_name,
                },
                {
                    'label': _('Export'),
                    'url': reverse('control:event.orders.export', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.orders.export' in url.url_name,
                },
                {
                    'label': _('Waiting list'),
                    'url': reverse('control:event.orders.waitinglist', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.orders.waitinglist' in url.url_name,
                },
            ]
        })

    if 'can_view_vouchers' in request.eventpermset:
        nav.append({
            'label': _('Vouchers'),
            'url': reverse('control:event.vouchers', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': False,
            'icon': 'tags',
            'children': [
                {
                    'label': _('All vouchers'),
                    'url': reverse('control:event.vouchers', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': url.url_name != 'event.vouchers.tags' and "event.vouchers" in url.url_name,
                },
                {
                    'label': _('Tags'),
                    'url': reverse('control:event.vouchers.tags', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.vouchers.tags' in url.url_name,
                },
            ]
        })

    if 'can_view_orders' in request.eventpermset:
        nav.append({
            'label': pgettext_lazy('navigation', 'Check-in'),
            'url': reverse('control:event.orders.checkinlists', kwargs={
                'event': request.event.slug,
                'organizer': request.event.organizer.slug,
            }),
            'active': False,
            'icon': 'check-square-o',
            'children': [
                {
                    'label': _('Check-in lists'),
                    'url': reverse('control:event.orders.checkinlists', kwargs={
                        'event': request.event.slug,
                        'organizer': request.event.organizer.slug,
                    }),
                    'active': 'event.orders.checkin' in url.url_name,
                },
            ]
        })

    merge_in(nav, sorted(
        sum((list(a[1]) for a in nav_event.send(request.event, request=request)), []),
        key=lambda r: r['label']
    ))

    return nav