116 lines
4.1 KiB
Python
116 lines
4.1 KiB
Python
# django
|
|
from django_core.mixins import BaseViewSetMixin
|
|
|
|
# django filters
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
|
|
# swagger
|
|
from drf_spectacular.utils import OpenApiParameter, extend_schema
|
|
|
|
# rest framework
|
|
from rest_framework.filters import OrderingFilter
|
|
from rest_framework.permissions import AllowAny
|
|
from rest_framework.response import Response
|
|
from rest_framework.viewsets import ReadOnlyModelViewSet
|
|
|
|
# core apps
|
|
from core.apps.evaluation.filters.history import (
|
|
AutoevaluationhistoryFilter,
|
|
QuickevaluationhistoryFilter,
|
|
)
|
|
from core.apps.evaluation.models import AutoevaluationhistoryModel, QuickevaluationhistoryModel
|
|
from core.apps.evaluation.serializers import history as serializers
|
|
|
|
|
|
@extend_schema(
|
|
tags=["AutoEvaluationHistory"],
|
|
parameters=[
|
|
OpenApiParameter("auto_evaluation", int, description="AutoEvaluation ID bo'yicha filter"),
|
|
OpenApiParameter("event_type", str, description="Event turi bo'yicha filter"),
|
|
OpenApiParameter("created_from", str, description="Boshlanish sanasi (ISO 8601)"),
|
|
OpenApiParameter("created_to", str, description="Tugash sanasi (ISO 8601)"),
|
|
],
|
|
)
|
|
class AutoEvaluationHistoryView(BaseViewSetMixin, ReadOnlyModelViewSet):
|
|
queryset = AutoevaluationhistoryModel.objects.only(
|
|
"id", "auto_evaluation_id", "event_type",
|
|
"actor_id", "actor_full_name", "actor_role",
|
|
"meta", "created_at",
|
|
)
|
|
serializer_class = serializers.ListAutoevaluationhistorySerializer
|
|
permission_classes = [AllowAny]
|
|
pagination_class = None
|
|
|
|
filter_backends = [DjangoFilterBackend, OrderingFilter]
|
|
filterset_class = AutoevaluationhistoryFilter
|
|
ordering_fields = [
|
|
"id",
|
|
"event_type",
|
|
"event_type_display",
|
|
"actor",
|
|
"meta",
|
|
"created_at",
|
|
]
|
|
ordering = ["created_at"]
|
|
|
|
action_permission_classes = {}
|
|
action_serializer_class = {
|
|
"list": serializers.ListAutoevaluationhistorySerializer,
|
|
"retrieve": serializers.RetrieveAutoevaluationhistorySerializer,
|
|
"create": serializers.CreateAutoevaluationhistorySerializer,
|
|
}
|
|
|
|
def list(self, request, *args, **kwargs):
|
|
queryset = self.filter_queryset(self.get_queryset())
|
|
results = list(queryset)
|
|
serializer = self.get_serializer(results, many=True)
|
|
return Response({
|
|
"count": len(results),
|
|
"next": None,
|
|
"previous": None,
|
|
"results": serializer.data,
|
|
})
|
|
|
|
|
|
@extend_schema(
|
|
tags=["QuickEvaluationHistory"],
|
|
parameters=[
|
|
OpenApiParameter("quick_evaluation", int, description="QuickEvaluation ID bo'yicha filter"),
|
|
OpenApiParameter("event_type", str, description="Event turi bo'yicha filter"),
|
|
OpenApiParameter("created_from", str, description="Boshlanish sanasi (ISO 8601)"),
|
|
OpenApiParameter("created_to", str, description="Tugash sanasi (ISO 8601)"),
|
|
],
|
|
)
|
|
class QuickEvaluationHistoryView(BaseViewSetMixin, ReadOnlyModelViewSet):
|
|
queryset = QuickevaluationhistoryModel.objects.only(
|
|
"id", "quick_evaluation_id", "event_type",
|
|
"actor_id", "actor_full_name", "actor_role",
|
|
"meta", "created_at",
|
|
)
|
|
serializer_class = serializers.ListQuickevaluationhistorySerializer
|
|
permission_classes = [AllowAny]
|
|
pagination_class = None
|
|
|
|
filter_backends = [DjangoFilterBackend, OrderingFilter]
|
|
filterset_class = QuickevaluationhistoryFilter
|
|
ordering_fields = ["created_at"]
|
|
ordering = ["created_at"]
|
|
|
|
action_permission_classes = {}
|
|
action_serializer_class = {
|
|
"list": serializers.ListQuickevaluationhistorySerializer,
|
|
"retrieve": serializers.RetrieveQuickevaluationhistorySerializer,
|
|
"create": serializers.CreateQuickevaluationhistorySerializer,
|
|
}
|
|
|
|
def list(self, request, *args, **kwargs):
|
|
queryset = self.filter_queryset(self.get_queryset())
|
|
results = list(queryset)
|
|
serializer = self.get_serializer(results, many=True)
|
|
return Response({
|
|
"count": len(results),
|
|
"next": None,
|
|
"previous": None,
|
|
"results": serializer.data,
|
|
})
|