From 7792e67b1e2f996b0b3ebb9f4f9d7dbe82ab651c Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Mon, 4 Aug 2025 16:14:35 +0330 Subject: [PATCH] Adding live_stocks Action To HerdViewSet --- apps/herd/web/api/v1/api.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/herd/web/api/v1/api.py b/apps/herd/web/api/v1/api.py index cfd4e1e..7a91199 100644 --- a/apps/herd/web/api/v1/api.py +++ b/apps/herd/web/api/v1/api.py @@ -1,6 +1,7 @@ from apps.herd.web.api.v1.serializers import HerdSerializer, RancherSerializer from apps.core.mixins.search_mixin import DynamicSearchMixin from apps.authentication.api.v1.api import UserViewSet +from apps.livestock.web.api.v1.serializers import LiveStockSerializer from common.helpers import get_organization_by_user from rest_framework.exceptions import APIException from rest_framework.response import Response @@ -94,6 +95,25 @@ class HerdViewSet(viewsets.ModelViewSet): except APIException as e: return Response(e, status=status.HTTP_204_NO_CONTENT) + @action( + methods=['get'], + detail=True, + url_path='live_stocks', + url_name='live_stocks', + name='live_stocks' + ) + def live_stocks(self, request, pk=None): + """ list of herd live_stocks""" + + herd = self.get_object() + queryset = herd.live_stock_herd.all() # get herd live_stocks + + # paginate queryset + page = self.paginate_queryset(queryset) + if page is not None: + serializer = LiveStockSerializer(page, many=True) + return self.get_paginated_response(serializer.data) + class RancherViewSet(viewsets.ModelViewSet, DynamicSearchMixin): queryset = Rancher.objects.all()