[UPDT] HORILLA: Added a any_permission_required decorater to check if any of the permission exists

This commit is contained in:
Horilla
2025-04-08 12:08:29 +05:30
parent 6c3ba1a1f4
commit 0bdafc6df8

View File

@@ -52,6 +52,24 @@ def permission_required(function, perm):
return _function
@decorator_with_arguments
def any_permission_required(function, perms):
def _function(request, *args, **kwargs):
if any(request.user.has_perm(perm) for perm in perms):
return function(request, *args, **kwargs)
else:
messages.info(request, "You dont have permission.")
previous_url = request.META.get("HTTP_REFERER", "/")
key = "HTTP_HX_REQUEST"
if key in request.META.keys():
return render(request, "decorator_404.html")
script = f'<script>window.location.href = "{previous_url}"</script>'
return HttpResponse(script)
return _function
decorator_with_arguments = (
lambda decorator: lambda *args, **kwargs: lambda func: decorator(
func, *args, **kwargs