views.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. from rest_framework import viewsets
  2. from utils.page import MyPageNumberPagination
  3. from utils.md5 import Md5
  4. from rest_framework.filters import OrderingFilter
  5. from django_filters.rest_framework import DjangoFilterBackend
  6. from rest_framework.response import Response
  7. from rest_framework.exceptions import APIException
  8. from django.http import StreamingHttpResponse
  9. from rest_framework.settings import api_settings
  10. from django.db import transaction
  11. from rest_framework import status
  12. from reportcenter.models import flowModel as flowlist
  13. from . import serializers
  14. from .filter import FlowFilter
  15. from .files import FileFlowListRenderCN
  16. class FlowsStatsViewSet(viewsets.ModelViewSet):
  17. filter_backends = [DjangoFilterBackend, OrderingFilter, ]
  18. ordering_fields = ['id', "create_time", "update_time", ]
  19. filter_class = FlowFilter
  20. pagination_class = MyPageNumberPagination
  21. """
  22. list:
  23. Response a data list(all)
  24. post:
  25. Create a new data(create)
  26. """
  27. def get_project(self):
  28. try:
  29. id = self.kwargs.get('pk')
  30. return id
  31. except:
  32. return None
  33. def get_queryset(self):
  34. id = self.get_project()
  35. if self.request.user:
  36. if id is None:
  37. return flowlist.objects.filter()
  38. else:
  39. return flowlist.objects.filter(id=id)
  40. else:
  41. return flowlist.objects.none()
  42. def get_serializer_class(self):
  43. if self.action in ['list', 'create', ]:
  44. return serializers.flowSerializer
  45. # elif self.action in ['retrieve','update',]:
  46. # return serializers.stocklistpartialSerializer
  47. else:
  48. return self.http_method_not_allowed(request=self.request)
  49. # def create(self, request, *args, **kwargs):
  50. # data = request.data.copy()
  51. # warehouse_code = data.get('warehouse_code')
  52. # warehouse_name = data.get('warehouse_name')
  53. # shelf_type = data.get('shelf_type')
  54. # shelf_name = data.get('shelf_name')
  55. # rows = int(data.get('rows', 0))
  56. # cols = int(data.get('cols', 0))
  57. # layers = int(data.get('layers', 0))
  58. # existing_positions = flowlist.get_existing_positions(warehouse_code,shelf_name, rows, cols, layers)
  59. # # 生成所有可能的坐标
  60. # instances = []
  61. # for r in range(1, rows+1):
  62. # for c in range(1, cols+1):
  63. # for l in range(1, layers+1):
  64. # if (r, c, l) not in existing_positions :
  65. # instances.append(flowlist(
  66. # warehouse_code=warehouse_code,
  67. # warehouse_name=warehouse_name,
  68. # shelf_type=shelf_type,
  69. # shelf_name=shelf_name,
  70. # row=r,
  71. # col=c,
  72. # layer=l,
  73. # ))
  74. # try:
  75. # with transaction.atomic():
  76. # flowlist.objects.bulk_create(instances, batch_size=1000)
  77. # except Exception as e:
  78. # return Response(
  79. # {"error": str(e)},
  80. # status=status.HTTP_500_INTERNAL_SERVER_ERROR
  81. # )
  82. # return Response({
  83. # "created": len(instances),
  84. # "skipped": (rows*cols*layers) - len(instances)
  85. # }, status=status.HTTP_201_CREATED)
  86. # def update(self, request, pk):
  87. # qs = self.get_object()
  88. # print(qs.id)
  89. # # return Response({"detail": "暂不支持修改"}, status=status.HTTP_400_BAD_REQUEST)
  90. # data = self.request.data
  91. # print(data)
  92. # serializer = self.get_serializer(qs, data=data)
  93. # serializer.is_valid(raise_exception=True)
  94. # serializer.save()
  95. # headers = self.get_success_headers(serializer.data)
  96. # return Response(serializer.data, status=200, headers=headers)
  97. # def retrieve(self, request, pk):
  98. # qs = self.get_object()
  99. # serializer = self.get_serializer(qs)
  100. # return Response(serializer.data)