# django core from django_core.mixins import BaseViewSetMixin # django filters from django_filters.rest_framework import DjangoFilterBackend # swagger from drf_spectacular.utils import extend_schema # rest framework from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.permissions import AllowAny from rest_framework.viewsets import ReadOnlyModelViewSet # core apps from core.apps.evaluation.filters.reference import ReferenceitemFilter from core.apps.evaluation.models import ReferenceitemModel from core.apps.evaluation.serializers import reference as serializers @extend_schema(tags=["EvaluationPurpose"]) class EvaluationPurposeView(BaseViewSetMixin, ReadOnlyModelViewSet): queryset = ReferenceitemModel.objects.filter( type="evaluation_purpose", is_active=True ).order_by("order", "name") serializer_class = serializers.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=["DeterminedValue"]) class DeterminedValueView(BaseViewSetMixin, ReadOnlyModelViewSet): queryset = ReferenceitemModel.objects.filter( type="determined_value", is_active=True ).order_by("order", "name") serializer_class = serializers.DeterminedValueSerializer permission_classes = [AllowAny] pagination_class = None filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] search_fields = ["name"] ordering_fields = ["name", "order"] ordering = ["order", "name"] @extend_schema(tags=["PropertyRights"]) class PropertyRightsView(BaseViewSetMixin, ReadOnlyModelViewSet): queryset = ReferenceitemModel.objects.filter( type="property_rights", is_active=True ).order_by("order", "name") serializer_class = serializers.LabelValueSerializer permission_classes = [AllowAny] pagination_class = None filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] search_fields = ["name"] ordering_fields = ["name", "order"] ordering = ["order", "name"] @extend_schema(tags=["OwnershipForm"]) class OwnershipFormView(BaseViewSetMixin, ReadOnlyModelViewSet): queryset = ReferenceitemModel.objects.filter( type="ownership_form", is_active=True ).order_by("order", "name") serializer_class = serializers.LabelValueSerializer 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 = serializers.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": serializers.ListReferenceitemSerializer, "retrieve": serializers.RetrieveReferenceitemSerializer, "create": serializers.CreateReferenceitemSerializer, }