"""ViewSets для API модуля закупок.""" from django_filters.rest_framework import DjangoFilterBackend from rest_framework import filters, viewsets from procurement.models import ( ProcurementItem, ) from ..serializers import ( ProcurementItemSerializer, ) from .item_mixins import ( ProcurementItemAccessMixin, ProcurementItemActionsMixin, ProcurementItemLifecycleMixin, ) from .mixins import ItemAttachmentsMixin, ItemCommentsMixin, ItemEquipmentMixin class ProcurementItemViewSet( ProcurementItemAccessMixin, ProcurementItemLifecycleMixin, ProcurementItemActionsMixin, ItemAttachmentsMixin, ItemCommentsMixin, ItemEquipmentMixin, viewsets.ModelViewSet, ): """ViewSet для позиций заявок.""" EXECUTION_FIELDS = { "actual_unit_price", "execution_status", "executor_comment", "expected_delivery_dates", "links", "ordered_quantity", "received_quantity", } NOTIFICATION_TRACKED_FIELDS = [ "name", "quantity", "unit", "estimated_unit_price", "ordered_quantity", "received_quantity", "links", "expected_delivery_dates", "actual_unit_price", "execution_status", "executor_comment", ] queryset = ProcurementItem.objects.select_related( "request", "request__department", "request__processing_department", ) serializer_class = ProcurementItemSerializer filter_backends = [DjangoFilterBackend, filters.SearchFilter] filterset_fields = ["request"] search_fields = ["name", "description"]