from datetime import timedelta from django.shortcuts import render from numpy import delete from rest_framework.exceptions import APIException from rest_framework.views import APIView from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin from rest_framework import serializers, status from rest_framework.response import Response from apps.em.filters import EquipFilterSet from apps.em.models import Equipment, ECheckRecord from apps.em.serializers import DaqCreateSerializer, EChcekRecordCreateSerializer, ECheckRecordListSerializer, \ EquipmentCreateUpdateSerializer, EquipmentListSerializer from apps.em.services import EmService from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from django.utils import timezone from django.db import transaction # Create your views here. class EquipmentViewSet(CreateUpdateModelAMixin, OptimizationMixin, ModelViewSet): """ 设备台账-增删改查 """ perms_map = {'get': '*', 'post': 'equipment_create', 'put': 'equipment_update', 'delete': 'equipment_delete'} queryset = Equipment.objects.all() serializer_class = EquipmentListSerializer search_fields = ['number', 'name','description'] filterset_class = EquipFilterSet ordering_fields = ['create_time'] ordering = ['-create_time'] def get_serializer_class(self): if self.action in ['create', 'update']: return EquipmentCreateUpdateSerializer return super().get_serializer_class() # Create your views here. class EChcekRecordViewSet(CreateUpdateModelAMixin, OptimizationMixin, CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin, GenericViewSet): """ 设备校准-增删改查 """ perms_map = {'get': '*', 'post': 'echeckrecord_create', 'delete': 'echeckrecord_delete'} queryset = ECheckRecord.objects.all() serializer_class = ECheckRecordListSerializer filterset_fields = ['equipment'] ordering = ['-id'] def get_serializer_class(self): if self.action in ['create']: return EChcekRecordCreateSerializer return super().get_serializer_class() @transaction.atomic def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) instance = serializer.save(create_by=request.user) EmService.update_check_date(equip=instance.equipment) return Response() @transaction.atomic def destroy(self, request, *args, **kwargs): instance = self.get_object() instance.delete() EmService.update_check_date(equip=instance.equipment) return Response() import uuid import os from django.conf import settings from rest_framework.parsers import MultiPartParser class DaqView(APIView): """ 数据采集 """ authentication_classes = [] permission_classes = [] parser_classes = [MultiPartParser] def post(self, request, format=None): data = request.data file = data.get('file', None) equip_num = data.get('equip_num', None) filename = str(uuid.uuid4()) filepath = settings.BASE_DIR +'/temp/' + filename + os.path.splitext(file.name)[-1] with open(filepath, 'wb') as f: for chunk in file.chunks(): f.write(chunk) return Response() # raise APIException('解析失败')