Implement exchange imports and frontend reporting APIs
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped

This commit is contained in:
2026-04-07 16:31:04 +02:00
parent 76a86d0b20
commit 697ecb7d1c
155 changed files with 5604 additions and 346 deletions

View File

@@ -0,0 +1,109 @@
"""Read-only APIs for external data registries."""
from django_filters import rest_framework as filters
from rest_framework.permissions import IsAuthenticated
from apps.core.viewsets import ClassicReadOnlyViewSet
from apps.external_data.models import (
ArbitrationCase,
IndustrialProduct,
ProsecutorCheck,
PublicProcurement,
)
from apps.external_data.serializers import (
ArbitrationCaseSerializer,
IndustrialProductSerializer,
ProsecutorCheckSerializer,
PublicProcurementSerializer,
)
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 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"]