123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import os
- import hashlib
- from django.views.generic.base import View
- from Ansjer.config import BASE_DIR
- from Model.models import Equipment_Version
- from Object.TokenObject import TokenObject
- from Object.ResponseObject import ResponseObject
- from Service.CommonService import CommonService
- class VersionManagement(View):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.GET, request, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.POST, request, operation)
- def validation(self, request_dict, request, operation):
- language = request_dict.get('language', 'en')
- response = ResponseObject(language, 'pc')
- if operation == 'upLoadFile':
- return self.upLoadFile(request, request_dict, response)
- else:
- tko = TokenObject(
- request.META.get('HTTP_AUTHORIZATION'),
- returntpye='pc')
- if tko.code != 0:
- return response.json(tko.code)
- response.lang = tko.lang
- userID = tko.userID
- if operation == 'getEquipmentVersionList':
- return self.getEquipmentVersionList(request_dict, response)
- elif operation == 'editVersionInformation':
- return self.editVersionInformation(request_dict, response)
- elif operation == 'deleteEquipmentVersion':
- return self.deleteEquipmentVersion(request_dict, response)
- else:
- return response.json(404)
- def getEquipmentVersionList(self, request_dict, response):
- mci = request_dict.get('mci', None)
- lang = request_dict.get('lang', None)
- version = request_dict.get('version', None)
- pageNo = request_dict.get('pageNo', None)
- pageSize = request_dict.get('pageSize', None)
- if not all([pageNo, pageSize]):
- return response.json(444)
- page = int(pageNo)
- line = int(pageSize)
- try:
- equipment_version_qs = Equipment_Version.objects.filter()
- if mci:
- equipment_version_qs = equipment_version_qs.filter(mci=mci)
- if lang:
- equipment_version_qs = equipment_version_qs.filter(lang=lang)
- if version:
- equipment_version_qs = equipment_version_qs.filter(version__contains=version)
- total = equipment_version_qs.count()
- equipment_version_qs = equipment_version_qs.values()[(page - 1) * line:page * line]
- equipment_version_list = CommonService.qs_to_list(equipment_version_qs)
- return response.json(0, {'list': equipment_version_list, 'total': total})
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
- def upLoadFile(self, request, request_dict, response):
- file = request.FILES.get('file', None)
- mci = request_dict.get('mci', '')
- lang = request_dict.get('lang', '')
- ESN = request_dict.get('ESN', '')
- max_ver = request_dict.get('max_ver', '')
- channel = request_dict.get('channel', '')
- resolutionRatio = request_dict.get('resolutionRatio', '')
- Description = request_dict.get('Description', '')
- status = request_dict.get('status', 0)
- fileSize = request_dict.get('fileSize', '')
- if not all([file, mci, lang, ESN, max_ver, channel, resolutionRatio]):
- return response.json(444)
- try:
- channel = int(channel)
- resolutionRatio = int(resolutionRatio)
- status = int(status)
- # 文件名为设备版本,最后一个'.'的前面为软件版本,后面为设备规格名称
- # V2.2.4.16E201252CA,软件版本:2.2.4,设备规格名称:16E201252CA
- file_name = str(file) # 文件名
- version = file_name[:file_name.rindex('.')] # 设备版本
- rpoint = version.rindex('.')
- softwareVersion = version[1:rpoint] # 软件版本
- code = version[rpoint+1:] # 设备规格名称
- chipModelList2Code = code[:4] # 主芯片
- type = code[-3:-1] # 设备机型
- companyCode = code[-1:] # 公司代码
- fileSize = fileSize
- filePath = '/'.join(('static/otapack', mci, lang, file_name))
- file_data = file.read()
- fileMd5 = hashlib.md5(file_data).hexdigest()
- data_dict = {'mci': mci, 'lang': lang, 'ESN': ESN, 'max_ver': max_ver, 'channel': channel,
- 'resolutionRatio': resolutionRatio, 'Description': Description, 'status': status,
- 'version': version, 'softwareVersion': softwareVersion, 'code': code,
- 'chipModelList2Code': chipModelList2Code, 'type': type, 'companyCode': companyCode,
- 'fileSize': fileSize, 'filePath': filePath, 'fileMd5': fileMd5}
- # Equipment_Version表创建或更新数据
- equipment_version_qs = Equipment_Version.objects.filter(code=code, lang=lang)
- if not equipment_version_qs.exists():
- Equipment_Version.objects.create(eid=CommonService.getUserID(getUser=False, setOTAID=True), **data_dict)
- else:
- equipment_version_qs.update(**data_dict)
- # 上传文件到服务器
- upload_path = '/'.join((BASE_DIR, 'static/otapack', mci, lang)).replace('\\', '/') + '/'
- if not os.path.exists(upload_path): # 上传目录不存在则创建
- os.makedirs(upload_path)
- # 文件上传
- full_name = upload_path + file_name
- if os.path.exists(full_name): # 删除同名文件
- os.remove(full_name)
- with open(full_name, 'wb+') as write_file:
- for chunk in file.chunks():
- write_file.write(chunk)
- return response.json(0)
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
- def editVersionInformation(self, request_dict, response):
- eid = request_dict.get('eid', None)
- ESN = request_dict.get('ESN', '')
- max_ver = request_dict.get('max_ver', '')
- status = request_dict.get('status', '')
- channel = request_dict.get('channel', '')
- resolutionRatio = request_dict.get('resolutionRatio', '')
- Description = request_dict.get('Description', '')
- if not eid:
- return response.json(444)
- status = 1 if status == 'true' else 0
- try:
- equipment_version_qs = Equipment_Version.objects.filter(eid=eid)
- if not equipment_version_qs.exists():
- return response.json(173)
- data_dict = {'ESN': ESN, 'max_ver': max_ver, 'status': status, 'channel': channel,
- 'resolutionRatio': resolutionRatio, 'Description': Description}
- equipment_version_qs.update(**data_dict)
- return response.json(0)
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
- def deleteEquipmentVersion(self, request_dict, response):
- eid = request_dict.get('eid', None)
- if not eid:
- return response.json(444)
- try:
- equipment_version_qs = Equipment_Version.objects.filter(eid=eid)
- filePath = equipment_version_qs.values('filePath')[0]['filePath']
- equipment_version_qs.delete()
- # 删除文件
- full_name = '/'.join((BASE_DIR, filePath)).replace('\\', '/')
- if os.path.exists(full_name):
- os.remove(full_name)
- return response.json(0)
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
|