Skip to content
Snippets Groups Projects
Unverified Commit 94842d2c authored by Fredrik Jonsson's avatar Fredrik Jonsson Committed by GitHub
Browse files

Merge pull request #3061 from HyphaApp/fix/groups-page-issue

Fix permission view for wagtail user groups
parents 096eb0ec d2f737d9
No related branches found
No related tags found
No related merge requests found
from django.contrib.auth.models import Permission
from django.core.exceptions import ImproperlyConfigured
from wagtail.contrib.modeladmin.helpers import PagePermissionHelper, PermissionHelper
from wagtail.contrib.modeladmin.options import WagtailRegisterable
from wagtail.contrib.settings.models import BaseSetting
from wagtail.contrib.settings.registry import SettingMenuItem
from wagtail.models import Page
class SettingModelAdmin(WagtailRegisterable):
......@@ -15,6 +18,8 @@ class SettingModelAdmin(WagtailRegisterable):
"""
model = None
inspect_view_enabled = False
permission_helper_class = None
def __init__(self, parent=None):
"""
......@@ -27,8 +32,40 @@ class SettingModelAdmin(WagtailRegisterable):
)
self.parent = parent
self.is_pagemodel = issubclass(self.model, Page)
self.permission_helper = self.get_permission_helper_class()(
self.model, self.inspect_view_enabled
)
def get_menu_item(self, order=None):
return SettingMenuItem(self.model)
def get_admin_urls_for_registration(self):
return ()
def get_permission_helper_class(self):
"""
Returns a permission_helper class to help with permission-based logic
for the given model.
**Copied from the wagtail's ModelAdmin**
"""
if self.permission_helper_class:
return self.permission_helper_class
if self.is_pagemodel:
return PagePermissionHelper
return PermissionHelper
def get_permissions_for_registration(self):
"""
Utilised by Wagtail's 'register_permissions' hook to allow permissions
for a model to be assigned to groups in settings. This is only required
if the model isn't a Page model, and isn't registered as a Snippet
**Copied from the wagtail's ModelAdmin**
"""
from wagtail.snippets.models import SNIPPET_MODELS
if not self.is_pagemodel and self.model not in SNIPPET_MODELS:
return self.permission_helper.get_all_model_permissions()
return Permission.objects.none()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment