class TokenViewSet(ModelViewSet): queryset = RestrictedQuerySet(model=Token).prefetch_related('user') serializer_class = serializers.TokenSerializer filterset_class = filtersets.TokenFilterSet def get_queryset(self): """ Limit the non-superusers to their own Tokens. """ queryset = super().get_queryset() # Workaround for schema generation (drf_yasg) if getattr(self, 'swagger_fake_view', False): return queryset.none() if self.request.user.is_superuser: return queryset return queryset.filter(user=self.request.user)
class GroupViewSet(ModelViewSet): queryset = RestrictedQuerySet(model=Group).annotate(user_count=Count('user')).order_by('name') serializer_class = serializers.GroupSerializer filterset_class = filters.GroupFilterSet
class UserViewSet(ModelViewSet): queryset = RestrictedQuerySet(model=User).prefetch_related('groups').order_by('username') serializer_class = serializers.UserSerializer filterset_class = filters.UserFilterSet
def get_queryset(cls, queryset, info): return RestrictedQuerySet(model=User).restrict(info.context.user, 'view')
def get_queryset(cls, queryset, info): return RestrictedQuerySet(model=User)