-
-
Save cnk/caf6b84d255f4513be18f166e77aaa45 to your computer and use it in GitHub Desktop.
Creating folders of menu items in the wagtail admin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CoursesAdminMenu(Menu): | |
""" | |
A Courses-specific submenu in the wagtail admin sidebar | |
""" | |
def __init__(self): | |
super().__init__(register_hook_name='register_courses_admin_menu_item') | |
class CoursesAdminSubmenu(SubmenuMenuItem): | |
def __init__(self): | |
super().__init__( | |
'Courses', | |
CoursesAdminMenu(), | |
classnames='icon icon-fa-institution', | |
order=115 | |
) | |
def is_shown(self, request): | |
""" | |
Hide this menu unless we have a CoursIndexPge the current user has permission to use it. | |
""" | |
user_has_perms = request.user.is_admin_or_editor(site) | |
course_listing_exists = CourseIndexPage2.objects.in_site(site).exists() | |
return user_has_perms and course_listing_exists | |
@hooks.register('register_admin_menu_item') | |
def register_admin_courses_menu(): | |
return CoursesAdminSubmenu() | |
class CourseManagementDashboardMenuItem(MenuItem): | |
def __init__(self): | |
# Rather than specifying these in the constructor, we let the class hard-code them for itself. | |
super().__init__( | |
label='Course Management Dashboard', | |
url=reverse('caltech_sites_admin:course_management_dashboard'), | |
classnames='icon icon-doc-full', | |
order=102 | |
) | |
def is_shown(self, request): | |
site = Site.find_for_request(request) | |
return CourseIndexPage2.objects.in_site(site) and request.user.is_admin_or_editor(site) | |
@hooks.register('register_courses_admin_menu_item') | |
def register_course_management_dashboard(): | |
return CourseManagementDashboardMenuItem() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment