Skip to content

Instantly share code, notes, and snippets.

@hasanisaeed
Forked from ceolson01/mixins.py
Created January 25, 2022 04:25
Show Gist options
  • Save hasanisaeed/2f74ca232f3b3cedea59e36a0f72cc0e to your computer and use it in GitHub Desktop.
Save hasanisaeed/2f74ca232f3b3cedea59e36a0f72cc0e to your computer and use it in GitHub Desktop.
Django Group Required Mixin
from django.core.exceptions import PermissionDenied
class GroupRequiredMixin(object):
"""
group_required - list of strings, required param
"""
group_required = None
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated():
raise PermissionDenied
else:
user_groups = []
for group in request.user.groups.values_list('name', flat=True):
user_groups.append(group)
if len(set(user_groups).intersection(self.group_required)) <= 0:
raise PermissionDenied
return super(GroupRequiredMixin, self).dispatch(request, *args, **kwargs)
from .mixins import GroupRequiredMixin
from django.views.generic import View
class DemoView(GroupRequiredMixin, View):
group_required = [u'admin', u'manager']
# View code...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment