UPDATE
This commit is contained in:
+49
-1
@@ -1,3 +1,5 @@
|
||||
from django.apps import apps
|
||||
|
||||
from drf_spectacular.utils import OpenApiExample, extend_schema
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
@@ -12,6 +14,8 @@ from .models import IrrigationMethod
|
||||
from .serializers import (
|
||||
IrrigationMethodSerializer,
|
||||
IrrigationRecommendRequestSerializer,
|
||||
WaterStressRequestSerializer,
|
||||
WaterStressResponseSerializer,
|
||||
)
|
||||
|
||||
|
||||
@@ -33,6 +37,10 @@ IrrigationRecommendResponseSerializer = build_envelope_serializer(
|
||||
"IrrigationRecommendResponseSerializer",
|
||||
data_schema=None,
|
||||
)
|
||||
WaterStressEnvelopeSerializer = build_envelope_serializer(
|
||||
"WaterStressEnvelopeSerializer",
|
||||
WaterStressResponseSerializer,
|
||||
)
|
||||
|
||||
|
||||
class IrrigationMethodListCreateView(APIView):
|
||||
@@ -139,7 +147,7 @@ class IrrigationRecommendView(APIView):
|
||||
OpenApiExample(
|
||||
"نمونه درخواست",
|
||||
value={
|
||||
"farm_uuid": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||||
"plant_name": "گوجهفرنگی",
|
||||
"growth_stage": "گلدهی",
|
||||
"irrigation_method_name": "آبیاری قطرهای",
|
||||
@@ -219,6 +227,46 @@ class IrrigationMethodDetailView(APIView):
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
|
||||
|
||||
class WaterStressView(APIView):
|
||||
@extend_schema(
|
||||
tags=["Irrigation"],
|
||||
summary="شاخص تنش آبی مزرعه",
|
||||
description=(
|
||||
"با دریافت farm_uuid، شاخص تنش آبی مزرعه را با استفاده از شبیه سازی "
|
||||
"crop_simulation و داده هایی مثل رطوبت خاک، ET0، بارش، مرحله رشد و پارامترهای خاک برمی گرداند."
|
||||
),
|
||||
request=WaterStressRequestSerializer,
|
||||
responses={
|
||||
200: build_response(WaterStressEnvelopeSerializer, "شاخص تنش آبی مزرعه."),
|
||||
400: build_response(IrrigationValidationErrorSerializer, "پارامتر ورودی نامعتبر است."),
|
||||
404: build_response(IrrigationValidationErrorSerializer, "مزرعه یافت نشد."),
|
||||
},
|
||||
examples=[
|
||||
OpenApiExample(
|
||||
"نمونه درخواست water stress",
|
||||
value={"farm_uuid": "11111111-1111-1111-1111-111111111111"},
|
||||
request_only=True,
|
||||
)
|
||||
],
|
||||
)
|
||||
def post(self, request):
|
||||
serializer = WaterStressRequestSerializer(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("irrigation").get_water_stress_service()
|
||||
try:
|
||||
data = service.get_water_stress(farm_uuid=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)
|
||||
|
||||
@extend_schema(
|
||||
tags=["Irrigation"],
|
||||
summary="ویرایش کامل روش آبیاری",
|
||||
|
||||
Reference in New Issue
Block a user