65 lines
1.6 KiB
Python
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"]
|