123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- from rest_framework import viewsets
- from utils.page import MyPageNumberPagination
- from utils.md5 import Md5
- from rest_framework.filters import OrderingFilter
- from django_filters.rest_framework import DjangoFilterBackend
- from rest_framework.response import Response
- from rest_framework.exceptions import APIException
- from django.http import StreamingHttpResponse
- from rest_framework.settings import api_settings
- from django.db import transaction
- from rest_framework import status
- from reportcenter.models import flowModel as flowlist
- from . import serializers
- from .filter import FlowFilter
- from .files import FileFlowListRenderCN
- class FlowsStatsViewSet(viewsets.ModelViewSet):
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = FlowFilter
- pagination_class = MyPageNumberPagination
-
- """
- list:
- Response a data list(all)
- post:
- Create a new data(create)
- """
-
- def get_project(self):
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
-
- def get_queryset(self):
- id = self.get_project()
- if self.request.user:
- if id is None:
- return flowlist.objects.filter()
- else:
- return flowlist.objects.filter(id=id)
- else:
- return flowlist.objects.none()
- def get_serializer_class(self):
- if self.action in ['list', 'create', ]:
- return serializers.flowSerializer
- # elif self.action in ['retrieve','update',]:
- # return serializers.stocklistpartialSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- # def create(self, request, *args, **kwargs):
- # data = request.data.copy()
- # warehouse_code = data.get('warehouse_code')
- # warehouse_name = data.get('warehouse_name')
- # shelf_type = data.get('shelf_type')
- # shelf_name = data.get('shelf_name')
-
- # rows = int(data.get('rows', 0))
- # cols = int(data.get('cols', 0))
- # layers = int(data.get('layers', 0))
-
- # existing_positions = flowlist.get_existing_positions(warehouse_code,shelf_name, rows, cols, layers)
- # # 生成所有可能的坐标
- # instances = []
- # for r in range(1, rows+1):
- # for c in range(1, cols+1):
- # for l in range(1, layers+1):
- # if (r, c, l) not in existing_positions :
- # instances.append(flowlist(
- # warehouse_code=warehouse_code,
- # warehouse_name=warehouse_name,
- # shelf_type=shelf_type,
- # shelf_name=shelf_name,
- # row=r,
- # col=c,
- # layer=l,
- # ))
- # try:
- # with transaction.atomic():
- # flowlist.objects.bulk_create(instances, batch_size=1000)
- # except Exception as e:
- # return Response(
- # {"error": str(e)},
- # status=status.HTTP_500_INTERNAL_SERVER_ERROR
- # )
- # return Response({
- # "created": len(instances),
- # "skipped": (rows*cols*layers) - len(instances)
- # }, status=status.HTTP_201_CREATED)
-
- # def update(self, request, pk):
- # qs = self.get_object()
- # print(qs.id)
- # # return Response({"detail": "暂不支持修改"}, status=status.HTTP_400_BAD_REQUEST)
-
- # data = self.request.data
- # print(data)
- # serializer = self.get_serializer(qs, data=data)
- # serializer.is_valid(raise_exception=True)
- # serializer.save()
- # headers = self.get_success_headers(serializer.data)
- # return Response(serializer.data, status=200, headers=headers)
- # def retrieve(self, request, pk):
- # qs = self.get_object()
- # serializer = self.get_serializer(qs)
- # return Response(serializer.data)
|