37 lines
1 KiB
Python
37 lines
1 KiB
Python
from django.contrib.auth import get_permission_codename
|
|
|
|
from wagtail.snippets.models import get_snippet_models
|
|
|
|
|
|
def get_permission_name(action, model):
|
|
return "{}.{}".format(
|
|
model._meta.app_label,
|
|
get_permission_codename(action, model._meta),
|
|
)
|
|
|
|
|
|
def user_can_edit_snippet_type(user, model):
|
|
"""true if user has 'add', 'change' or 'delete' permission on this model"""
|
|
for action in ("add", "change", "delete"):
|
|
if user.has_perm(get_permission_name(action, model)):
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def user_can_access_snippets(user, models=None):
|
|
"""
|
|
true if user has 'add', 'change', 'delete', or 'view' permission
|
|
on any model registered as a snippet type - or if a `models` list
|
|
is passed, any of those models
|
|
"""
|
|
if models is None:
|
|
models = get_snippet_models()
|
|
|
|
for model in models:
|
|
if model.snippet_viewset.permission_policy.user_has_any_permission(
|
|
user, {"add", "change", "delete", "view"}
|
|
):
|
|
return True
|
|
|
|
return False
|