132 lines
5.0 KiB
Python
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"]
|