cma_search/server/apps/ability/views.py

69 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from .models import CMA
from .serializers import CMASerializer
from rest_framework.decorators import action
from django.conf import settings
from rest_framework import status
from rest_framework.response import Response
import zipfile
import rarfile
from openpyxl import Workbook, load_workbook
# Create your views here.
class CMAViewSet(ModelViewSet):
"""
CMA检测能力增删改查
"""
perms_map = {'get': '*', 'post': 'cma_create',
'put': 'cma_update', 'delete': 'cma_delete'}
queryset = CMA.objects.all()
serializer_class = CMASerializer
search_fields = ['bzbh', 'bzmc', 'sszx', 'xmmc']
ordering_fields = ['xmxh']
ordering = 'xmxh'
@action(methods=['post'], detail=False, url_path='import', url_name='cma_import', perms_map = {'post':'cma_import'})
def cma_import(self, request, pk=None):
"""
导入能力
"""
filepath = request.data['path']
fullpath = settings.BASE_DIR + filepath
import os
if fullpath.endswith('.rar'):
rar = rarfile.RarFile(fullpath)
fulldir = fullpath.replace('.rar','')
os.mkdir(fulldir)
os.chdir(fulldir)
rar.extractall()
rar.close()
CMA.objects.all().delete()
for root, dirs, files in os.walk(fulldir):
for f in files:
import_cma(f, os.path.join(root,f))
return Response(status = status.HTTP_200_OK)
def import_cma(filename, path):
wb = load_workbook(path)
sheet = wb.worksheets[0]
datalist = []
sszx = filename.replace('.xlsx','').replace('副本14检验检测能力申请表-','')
i = 4
while sheet['b'+str(i)].value:
data = {}
data['dlxh'] = sheet['a'+str(i)].value
data['dlmc'] = sheet['b'+str(i)].value
data['lbxh'] = sheet['c'+str(i)].value
data['lbmc'] = sheet['d'+str(i)].value
data['xmxh'] = sheet['e'+str(i)].value
data['xmmc'] = sheet['f'+str(i)].value
data['bzmc'] = sheet['g'+str(i)].value
data['bzbh'] = sheet['h'+str(i)].value
data['xzfw'] = sheet['i'+str(i)].value
data['bz'] = sheet['j'+str(i)].value
data['sszx'] = sszx
print(data)
datalist.append(CMA(**data))
i = i + 1
CMA.objects.bulk_create(datalist)