Skip to content

Instantly share code, notes, and snippets.

@quevon24
Forked from ceolson01/mixins.py
Created November 19, 2020 02:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quevon24/b827e8b564aa039fa32135cb5515ec08 to your computer and use it in GitHub Desktop.
Save quevon24/b827e8b564aa039fa32135cb5515ec08 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