UPDATE
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from farm_hub.models import FarmHub
|
||||
|
||||
from .mock_data import (
|
||||
ANOMALY_DETECTION_CARD,
|
||||
ARM_ALERTS_TRACKER,
|
||||
FARM_ALERTS_TIMELINE,
|
||||
RECOMMENDATIONS_LIST,
|
||||
)
|
||||
from .serializers import (
|
||||
AlertTimelineSerializer,
|
||||
AlertTrackerSerializer,
|
||||
AnomalyDetectionSerializer,
|
||||
CreateAlertSerializer,
|
||||
RecommendationsListSerializer,
|
||||
)
|
||||
from .services import AlertService
|
||||
|
||||
|
||||
class AlertTrackerView(APIView):
|
||||
def get(self, request):
|
||||
serializer = AlertTrackerSerializer(ARM_ALERTS_TRACKER)
|
||||
return Response({"status": "success", "result": serializer.data})
|
||||
|
||||
|
||||
class AlertTimelineView(APIView):
|
||||
def get(self, request):
|
||||
serializer = AlertTimelineSerializer(FARM_ALERTS_TIMELINE)
|
||||
return Response({"status": "success", "result": serializer.data})
|
||||
|
||||
|
||||
class AnomalyDetectionView(APIView):
|
||||
def get(self, request):
|
||||
serializer = AnomalyDetectionSerializer(ANOMALY_DETECTION_CARD)
|
||||
return Response({"status": "success", "result": serializer.data})
|
||||
|
||||
|
||||
class RecommendationsListView(APIView):
|
||||
def get(self, request):
|
||||
serializer = RecommendationsListSerializer(RECOMMENDATIONS_LIST)
|
||||
return Response({"status": "success", "result": serializer.data})
|
||||
|
||||
|
||||
class CreateAlertView(APIView):
|
||||
def post(self, request):
|
||||
serializer = CreateAlertSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response(
|
||||
{"status": "error", "errors": serializer.errors},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
data = serializer.validated_data
|
||||
farm = None
|
||||
farm_uuid = data.get("farm_uuid")
|
||||
if farm_uuid:
|
||||
try:
|
||||
farm = FarmHub.objects.get(uuid=farm_uuid)
|
||||
except FarmHub.DoesNotExist:
|
||||
return Response(
|
||||
{"status": "error", "message": "farm not found"},
|
||||
status=status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
|
||||
alert = AlertService.create_alert(
|
||||
title=data["title"],
|
||||
description=data.get("description", ""),
|
||||
color=data.get("color", "info"),
|
||||
avatar_icon=data.get("avatar_icon", ""),
|
||||
avatar_color=data.get("avatar_color", ""),
|
||||
farm=farm,
|
||||
)
|
||||
|
||||
return Response(
|
||||
{"status": "success", "result": {"uuid": str(alert.uuid), "title": alert.title}},
|
||||
status=status.HTTP_201_CREATED,
|
||||
)
|
||||
Reference in New Issue
Block a user