This commit is contained in:
2026-03-25 01:56:41 +03:30
parent eb34360345
commit 98406cfd59
99 changed files with 3156 additions and 232 deletions
+38 -14
View File
@@ -7,9 +7,34 @@ from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from config.openapi import (
build_envelope_serializer,
build_response,
build_task_queue_data_serializer,
build_task_status_data_serializer,
)
from .tasks import generate_dashboard_data_task
DashboardDataGenerateDataSerializer = build_task_queue_data_serializer(
"DashboardDataGenerateDataSerializer"
)
DashboardDataGenerateResponseSerializer = build_envelope_serializer(
"DashboardDataGenerateResponseSerializer",
DashboardDataGenerateDataSerializer,
)
DashboardDataErrorResponseSerializer = build_envelope_serializer(
"DashboardDataErrorResponseSerializer",
data_required=False,
allow_null=True,
)
DashboardDataStatusResponseSerializer = build_envelope_serializer(
"DashboardDataStatusResponseSerializer",
build_task_status_data_serializer("DashboardDataStatusDataSerializer"),
)
class DashboardDataGenerateView(APIView):
@extend_schema(
tags=["Dashboard Data"],
@@ -22,21 +47,14 @@ class DashboardDataGenerateView(APIView):
},
),
responses={
202: inline_serializer(
name="DashboardDataGenerateResponse",
fields={
"code": drf_serializers.IntegerField(),
"msg": drf_serializers.CharField(),
"data": inline_serializer(
name="DashboardDataGenerateResponseData",
fields={
"task_id": drf_serializers.CharField(),
"status_url": drf_serializers.CharField(),
},
),
},
202: build_response(
DashboardDataGenerateResponseSerializer,
"تسک ساخت داده داشبورد در صف قرار گرفت.",
),
400: build_response(
DashboardDataErrorResponseSerializer,
"پارامتر ورودی نامعتبر است.",
),
400: OpenApiResponse(description="Invalid input"),
},
)
def post(self, request):
@@ -72,6 +90,12 @@ class DashboardDataStatusView(APIView):
@extend_schema(
tags=["Dashboard Data"],
summary="Dashboard task status",
responses={
200: build_response(
DashboardDataStatusResponseSerializer,
"وضعیت فعلی تسک داده داشبورد.",
),
},
)
def get(self, request, task_id):
result = AsyncResult(task_id)