user_by_groups.py 961 B

123456789101112131415161718192021222324252627
  1. from django.contrib.auth import get_user_model
  2. from django.contrib.auth.models import Group
  3. from rest_framework.response import Response
  4. from rest_framework.exceptions import NotFound
  5. from rest_framework import serializers
  6. from rest_framework.views import APIView
  7. from rest_framework.permissions import IsAuthenticated
  8. from rest_framework_api_key.permissions import HasAPIKey
  9. class UserSerializer(serializers.ModelSerializer):
  10. class Meta:
  11. model = get_user_model()
  12. fields = ['id', 'username', 'email']
  13. class GroupUsersAPIView(APIView):
  14. permission_classes = [IsAuthenticated | HasAPIKey]
  15. def get(self, request, group_name):
  16. try:
  17. group = Group.objects.get(name=group_name)
  18. except Group.DoesNotExist:
  19. raise NotFound(f"Group '{group_name}' not found.")
  20. users = group.user_set.all()
  21. serializer = UserSerializer(users, many=True)
  22. return Response(serializer.data)