From 9679557747b456efc2caa4bf790008b0b6231840 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 1 Jun 2020 12:31:18 -0400 Subject: [PATCH] Add permission_is_exempt() --- netbox/utilities/permissions.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/netbox/utilities/permissions.py b/netbox/utilities/permissions.py index 697e18828..de024cf99 100644 --- a/netbox/utilities/permissions.py +++ b/netbox/utilities/permissions.py @@ -1,5 +1,5 @@ +from django.conf import settings from django.contrib.contenttypes.models import ContentType -from django.db.models import Q def get_permission_for_model(model, action): @@ -34,3 +34,25 @@ def resolve_permission(name): raise ValueError(f"Unknown app/model for {name}") return content_type, action + + +def permission_is_exempt(name): + """ + Determine whether a specified permission is exempt from evaluation. + + :param name: Permission name in the format ._ + """ + app_label, codename = name.split('.') + action, model_name = codename.split('_') + + if action == 'view': + if ( + # All models are exempt from view permission enforcement + '*' in settings.EXEMPT_VIEW_PERMISSIONS + ) or ( + # This specific model is exempt from view permission enforcement + '{}.{}'.format(app_label, model_name) in settings.EXEMPT_VIEW_PERMISSIONS + ): + return True + + return False