UPDATE
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from django.apps import apps
|
||||
from rest_framework import status
|
||||
from drf_spectacular.utils import (
|
||||
OpenApiExample,
|
||||
@@ -16,6 +17,8 @@ from config.openapi import (
|
||||
)
|
||||
from .models import SoilLocation
|
||||
from .serializers import (
|
||||
NdviHealthRequestSerializer,
|
||||
NdviHealthResponseSerializer,
|
||||
SoilDataRequestSerializer,
|
||||
SoilDepthDataSerializer,
|
||||
SoilDataTaskResponseSerializer,
|
||||
@@ -51,6 +54,10 @@ SoilTaskStatusResponseSerializer = build_envelope_serializer(
|
||||
"SoilTaskStatusResponseSerializer",
|
||||
build_task_status_data_serializer("SoilTaskStatusDataSerializer"),
|
||||
)
|
||||
NdviHealthEnvelopeSerializer = build_envelope_serializer(
|
||||
"NdviHealthEnvelopeSerializer",
|
||||
NdviHealthResponseSerializer,
|
||||
)
|
||||
|
||||
|
||||
class SoilDataView(APIView):
|
||||
@@ -233,3 +240,56 @@ class SoilDataTaskStatusView(APIView):
|
||||
{"code": 200, "msg": "success", "data": data},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
|
||||
|
||||
class NdviHealthView(APIView):
|
||||
@extend_schema(
|
||||
tags=["Soil Data"],
|
||||
summary="دریافت NDVI سلامت مزرعه",
|
||||
description="با دریافت farm_uuid، داده NDVI سلامت پوشش گیاهی مزرعه را به صورت مستقل از dashboard برمی گرداند.",
|
||||
request=NdviHealthRequestSerializer,
|
||||
responses={
|
||||
200: build_response(
|
||||
NdviHealthEnvelopeSerializer,
|
||||
"داده NDVI مزرعه با موفقیت بازگردانده شد.",
|
||||
),
|
||||
400: build_response(
|
||||
SoilErrorResponseSerializer,
|
||||
"داده ورودی نامعتبر است.",
|
||||
),
|
||||
404: build_response(
|
||||
SoilErrorResponseSerializer,
|
||||
"مزرعه یافت نشد.",
|
||||
),
|
||||
},
|
||||
examples=[
|
||||
OpenApiExample(
|
||||
"نمونه درخواست NDVI",
|
||||
value={"farm_uuid": "11111111-1111-1111-1111-111111111111"},
|
||||
request_only=True,
|
||||
)
|
||||
],
|
||||
)
|
||||
def post(self, request):
|
||||
serializer = NdviHealthRequestSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response(
|
||||
{"code": 400, "msg": "داده نامعتبر.", "data": serializer.errors},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
service = apps.get_app_config("location_data").get_ndvi_health_service()
|
||||
try:
|
||||
data = service.get_ndvi_health(
|
||||
farm_uuid=str(serializer.validated_data["farm_uuid"])
|
||||
)
|
||||
except ValueError as exc:
|
||||
return Response(
|
||||
{"code": 404, "msg": str(exc), "data": None},
|
||||
status=status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
|
||||
return Response(
|
||||
{"code": 200, "msg": "success", "data": data},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user