Files
neuf-www/dnscms/events/wagtail_hooks.py
T

61 lines
1.7 KiB
Python

from django.urls import path, reverse_lazy
from django.utils.translation import gettext_lazy as _
from wagtail import hooks
from wagtail.admin.auth import user_passes_test
from wagtail.admin.menu import MenuItem
from wagtail.snippets.models import register_snippet
from .admin import event_sidebar_viewset, event_explorer_viewset
from .merge_organizers import MergeOrganizersConfirmView, MergeOrganizersSelectView
from .views import EventOrganizerSnippetViewSet, event_organizer_chooser_viewset
register_snippet(EventOrganizerSnippetViewSet)
superuser_only = user_passes_test(lambda user: user.is_superuser)
class SuperuserMenuItem(MenuItem):
def is_shown(self, request):
return request.user.is_superuser
@hooks.register("register_admin_urls")
def register_merge_organizers_urls():
return [
path(
"merge-organizers/",
superuser_only(MergeOrganizersSelectView.as_view()),
name="events_merge_organizers",
),
path(
"merge-organizers/confirm/",
superuser_only(MergeOrganizersConfirmView.as_view()),
name="events_merge_organizers_confirm",
),
]
@hooks.register("register_settings_menu_item")
def register_merge_organizers_menu_item():
return SuperuserMenuItem(
_("Merge organizers"),
reverse_lazy("events_merge_organizers"),
icon_name="group",
order=1100,
)
@hooks.register("register_admin_viewset")
def register_viewset():
return event_organizer_chooser_viewset
@hooks.register("register_admin_viewset")
def register_event_sidebar_viewset():
return event_sidebar_viewset
@hooks.register("register_admin_viewset")
def register_event_explorer_viewset():
return event_explorer_viewset