Files
state-corp-backend/src/apps/external_data/api.py

132 lines
5.0 KiB
Python

"""Read-only APIs for external data registries."""
from apps.core.viewsets import ClassicReadOnlyViewSet
from apps.external_data.models import (
ArbitrationCase,
IndustrialProduct,
ProsecutorCheck,
PublicProcurement,
InformationSecurityRegistryEntry,
)
from apps.external_data.serializers import (
ArbitrationCaseSerializer,
IndustrialProductSerializer,
ProsecutorCheckSerializer,
PublicProcurementSerializer,
InformationSecurityRegistryEntrySerializer,
)
from django_filters import rest_framework as filters
from rest_framework.permissions import IsAuthenticated
class IndustrialProductFilter(filters.FilterSet):
organization = filters.UUIDFilter(field_name="organization_id")
product_class = filters.CharFilter(lookup_expr="exact")
class Meta:
model = IndustrialProduct
fields = ["organization", "product_class"]
class ProsecutorCheckFilter(filters.FilterSet):
organization = filters.UUIDFilter(field_name="organization_id")
law_type = filters.CharFilter(lookup_expr="exact")
start_date_from = filters.DateFilter(field_name="start_date", lookup_expr="gte")
start_date_to = filters.DateFilter(field_name="start_date", lookup_expr="lte")
class Meta:
model = ProsecutorCheck
fields = ["organization", "law_type", "start_date_from", "start_date_to"]
class PublicProcurementFilter(filters.FilterSet):
organization = filters.UUIDFilter(field_name="organization_id")
law_type = filters.CharFilter(lookup_expr="exact")
contract_date_from = filters.DateFilter(
field_name="contract_date", lookup_expr="gte"
)
contract_date_to = filters.DateFilter(field_name="contract_date", lookup_expr="lte")
class Meta:
model = PublicProcurement
fields = ["organization", "law_type", "contract_date_from", "contract_date_to"]
class ArbitrationCaseFilter(filters.FilterSet):
organization = filters.UUIDFilter(field_name="organization_id")
party_role = filters.CharFilter(lookup_expr="exact")
decision_date_from = filters.DateFilter(
field_name="decision_date", lookup_expr="gte"
)
decision_date_to = filters.DateFilter(field_name="decision_date", lookup_expr="lte")
class Meta:
model = ArbitrationCase
fields = [
"organization",
"party_role",
"decision_date_from",
"decision_date_to",
]
class InformationSecurityRegistryEntryFilter(filters.FilterSet):
organization = filters.UUIDFilter(field_name="organization_id")
presence_status = filters.CharFilter(lookup_expr="exact")
class Meta:
model = InformationSecurityRegistryEntry
fields = ["organization", "presence_status"]
class IndustrialProductViewSet(ClassicReadOnlyViewSet[IndustrialProduct]):
queryset = IndustrialProduct.objects.select_related("organization").all()
serializer_class = IndustrialProductSerializer
permission_classes = [IsAuthenticated]
filterset_class = IndustrialProductFilter
search_fields = ["product_name", "okpd2_code", "tnved_code", "registry_number"]
ordering_fields = ["product_name", "created_at"]
ordering = ["product_name"]
class ProsecutorCheckViewSet(ClassicReadOnlyViewSet[ProsecutorCheck]):
queryset = ProsecutorCheck.objects.select_related("organization").all()
serializer_class = ProsecutorCheckSerializer
permission_classes = [IsAuthenticated]
filterset_class = ProsecutorCheckFilter
search_fields = ["registration_number", "control_authority", "prosecutor_office"]
ordering_fields = ["start_date", "created_at"]
ordering = ["-start_date"]
class PublicProcurementViewSet(ClassicReadOnlyViewSet[PublicProcurement]):
queryset = PublicProcurement.objects.select_related("organization").all()
serializer_class = PublicProcurementSerializer
permission_classes = [IsAuthenticated]
filterset_class = PublicProcurementFilter
search_fields = ["purchase_number", "purchase_name"]
ordering_fields = ["contract_date", "created_at", "contract_amount"]
ordering = ["-contract_date"]
class ArbitrationCaseViewSet(ClassicReadOnlyViewSet[ArbitrationCase]):
queryset = ArbitrationCase.objects.select_related("organization").all()
serializer_class = ArbitrationCaseSerializer
permission_classes = [IsAuthenticated]
filterset_class = ArbitrationCaseFilter
search_fields = ["case_number", "court_name"]
ordering_fields = ["decision_date", "created_at"]
ordering = ["-decision_date"]
class InformationSecurityRegistryEntryViewSet(
ClassicReadOnlyViewSet[InformationSecurityRegistryEntry]
):
queryset = InformationSecurityRegistryEntry.objects.select_related("organization").all()
serializer_class = InformationSecurityRegistryEntrySerializer
permission_classes = [IsAuthenticated]
filterset_class = InformationSecurityRegistryEntryFilter
search_fields = ["registry_name", "entry_number"]
ordering_fields = ["issued_at", "expires_at", "created_at"]
ordering = ["-issued_at"]