def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) ctx['nav_event_settings'] = [] ctx['is_event_settings'] = True for recv, retv in nav_event_settings.send(sender=self.request.event, request=self.request): ctx['nav_event_settings'] += retv ctx['nav_event_settings'].sort(key=lambda n: n['label']) return ctx
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
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