Files
backend-v1/core/apps/evaluation/views/reference.py
2026-03-17 19:36:21 +05:00

51 lines
1.9 KiB
Python

from django_core.mixins import BaseViewSetMixin
from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema
from rest_framework.filters import OrderingFilter, SearchFilter
from rest_framework.permissions import AllowAny
from rest_framework.viewsets import ReadOnlyModelViewSet
from core.apps.evaluation.filters.reference import ReferenceitemFilter
from core.apps.evaluation.models import ReferenceitemModel
from core.apps.evaluation.serializers.reference import (
CreateReferenceitemSerializer,
ListReferenceitemSerializer,
RetrieveReferenceitemSerializer,
EvaluationPurposeSerializer,
)
@extend_schema(tags=["EvaluationPurpose"])
class EvaluationPurposeView(BaseViewSetMixin, ReadOnlyModelViewSet):
queryset = ReferenceitemModel.objects.filter(
type="evaluation_purpose", is_active=True
).order_by("order", "name")
serializer_class = EvaluationPurposeSerializer
permission_classes = [AllowAny]
pagination_class = None
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
search_fields = ["name"]
ordering_fields = ["name", "order"]
ordering = ["order", "name"]
@extend_schema(tags=["ReferenceItem"])
class ReferenceitemView(BaseViewSetMixin, ReadOnlyModelViewSet):
queryset = ReferenceitemModel.objects.select_related("parent").filter(is_active=True)
serializer_class = ListReferenceitemSerializer
permission_classes = [AllowAny]
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = ReferenceitemFilter
search_fields = ["name"]
ordering_fields = ["name", "order", "type"]
ordering = ["order", "name"]
action_permission_classes = {}
action_serializer_class = {
"list": ListReferenceitemSerializer,
"retrieve": RetrieveReferenceitemSerializer,
"create": CreateReferenceitemSerializer,
}