from django.contrib.auth.models import Group from django.http import HttpResponseForbidden def group_required(group_names): def decorator(view_func): def _wrapped_view(request, *args, **kwargs): if request.user.is_authenticated: if request.user.groups.filter(name__in=group_names).exists() or request.user.is_superuser: return view_func(request, *args, **kwargs) return HttpResponseForbidden("You don't have permission to access this page.") return _wrapped_view return decorator