65 lines
1.6 KiB
Python

"""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"]