ixg_platform/apps/batches/views.py

31 lines
1.3 KiB
Python

from rest_framework import viewsets, permissions, filters
from django_filters.rest_framework import DjangoFilterBackend
from .models import ProcessingBatch
from .serializers import ProcessingBatchListSerializer, ProcessingBatchDetailSerializer, ProcessingBatchWriteSerializer
class ProcessingBatchViewSet(viewsets.ModelViewSet):
queryset = ProcessingBatch.objects.prefetch_related("qc_results", "shipments", "documents").all()
permission_classes = [permissions.IsAuthenticated]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_fields = ["status", "grade"]
search_fields = ["batch_reference"]
ordering_fields = ["created_at", "harvest_date"]
ordering = ["-created_at"]
def get_serializer_class(self):
if self.action == "list":
return ProcessingBatchListSerializer
if self.action in ("create", "update", "partial_update"):
return ProcessingBatchWriteSerializer
return ProcessingBatchDetailSerializer
def perform_create(self, serializer):
serializer.save(created_by=self.request.user)
def get_queryset(self):
user = self.request.user
qs = super().get_queryset()
if user.role == "buyer":
return qs # Buyers can read all batches per spec
return qs