Skip to content

Instantly share code, notes, and snippets.

@brunomichetti
Created August 21, 2023 13:13
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 brunomichetti/a29588689b21786e48d2110a6f2633ff to your computer and use it in GitHub Desktop.
Save brunomichetti/a29588689b21786e48d2110a6f2633ff to your computer and use it in GitHub Desktop.
# Add this to the UserViewSet
@action(detail=False, methods=("GET", "POST",))
def leaders(self, request):
if request.method == "GET":
leaders_ids = CustomUser.objects.filter(
leader_id__isnull=False
).distinct().values_list("leader_id", flat=True)
leaders_queryset = CustomUser.objects.filter(id__in=leaders_ids)
return_serializer = UserListSerializer(leaders_queryset, many=True)
return Response(return_serializer.data, status.HTTP_200_OK)
elif request.method == "POST":
ids_serializer = SetLeaderSerializer(data=request.data)
if ids_serializer.is_valid(raise_exception=True):
user = ids_serializer.validated_data.get("user")
leader = ids_serializer.validated_data.get("leader")
user.leader = leader
user.save()
return Response(ids_serializer.data, status.HTTP_200_OK)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment