from django.shortcuts import get_object_or_404 from rest_framework import generics, views from rest_framework.response import Response from core.apps.wherehouse.models import WhereHouse, Inventory from core.apps.wherehouse.serializers import wherehouse as serializers from core.apps.accounts.permissions.permissions import HasRolePermission class WhereHouseListApiView(generics.GenericAPIView): serializer_class = serializers.WhereHouseListSerializer queryset = WhereHouse.objects.prefetch_related('users', 'projects') permission_classes = [HasRolePermission] def get(self, request): mine = request.query_params.get('mine') if mine and mine == 'true': self.queryset = self.queryset.filter(users=request.user) page = self.paginate_queryset(self.queryset) if page is not None: serializer = self.serializer_class(page, many=True) return self.get_paginated_response(serializer.data) class WhereHouseDetailApiView(generics.RetrieveAPIView): serializer_class = serializers.WhereHouseDetailSerializer queryset = WhereHouse.objects.all() permission_classes = [HasRolePermission] lookup_field = 'id' class WhereHouseCreateApiView(generics.CreateAPIView): serializer_class = serializers.WhereHouseCreateSerializer queryset = WhereHouse.objects.all() permission_classes = [HasRolePermission] class WhereHouseDeleteApiView(views.APIView): permission_classes = [HasRolePermission] def delete(self, request, id): wherehouse = get_object_or_404(WhereHouse, id=id) wherehouse.delete() return Response( {'success': True, 'message': 'Deleted!'}, status=204 ) class WhereHouseUpdateApiView(generics.UpdateAPIView): serializer_class = serializers.WhereHouseUpdateSerializer queryset = WhereHouse.objects.all() lookup_field = 'id' permission_classes = [HasRolePermission]