VersionManagementController.py 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import hashlib
  5. import time
  6. import boto3
  7. import botocore
  8. from django.db import transaction
  9. from django.views.generic.base import View
  10. from Ansjer.config import BASE_DIR, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
  11. from Object.TokenObject import TokenObject
  12. from Object.ResponseObject import ResponseObject
  13. from Service.CommonService import CommonService
  14. from Model.models import Equipment_Version, App_Info, AppSetModel, App_Colophon, Pc_Info
  15. class VersionManagement(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def validation(self, request_dict, request, operation):
  25. language = request_dict.get('language', 'en')
  26. response = ResponseObject(language, 'pc')
  27. if operation == 'upLoadFile':
  28. return self.upLoadFile(request, request_dict, response)
  29. else:
  30. tko = TokenObject(
  31. request.META.get('HTTP_AUTHORIZATION'),
  32. returntpye='pc')
  33. if tko.code != 0:
  34. return response.json(tko.code)
  35. response.lang = tko.lang
  36. userID = tko.userID
  37. if operation == 'getEquipmentVersionList':
  38. return self.getEquipmentVersionList(request_dict, response)
  39. elif operation == 'editVersionInformation':
  40. return self.editVersionInformation(request_dict, response)
  41. elif operation == 'deleteEquipmentVersion':
  42. return self.deleteEquipmentVersion(request_dict, response)
  43. elif operation == 'getAppVersionList':
  44. return self.getAppVersionList(request_dict, response)
  45. elif operation == 'addOrEditAppInfo':
  46. return self.addOrEditAppInfo(request_dict, response)
  47. elif operation == 'deleteAppVersion':
  48. return self.deleteAppVersion(request_dict, response)
  49. elif operation == 'getAppSet':
  50. return self.getAppSet(request_dict, response)
  51. elif operation == 'editAppSet':
  52. return self.editAppSet(request_dict, response)
  53. elif operation == 'getAppRecordList':
  54. return self.getAppRecordList(request_dict, response)
  55. elif operation == 'getAppBundleIdList':
  56. return self.getAppBundleIdList(request_dict, response)
  57. elif operation == 'addOrEditAppRecord':
  58. return self.addOrEditAppRecord(request_dict, response)
  59. elif operation == 'deleteAppRecord':
  60. return self.deleteAppRecord(request_dict, response)
  61. elif operation == 'getPcInfoList':
  62. return self.getPcInfoList(request_dict, response)
  63. elif operation == 'editPcVersion':
  64. return self.editPcVersion(request_dict, response)
  65. elif operation == 'deletePcInfo':
  66. return self.deletePcInfo(request_dict, response)
  67. else:
  68. return response.json(404)
  69. def getEquipmentVersionList(self, request_dict, response):
  70. mci = request_dict.get('mci', None)
  71. lang = request_dict.get('lang', None)
  72. version = request_dict.get('version', None)
  73. pageNo = request_dict.get('pageNo', None)
  74. pageSize = request_dict.get('pageSize', None)
  75. if not all([pageNo, pageSize]):
  76. return response.json(444)
  77. page = int(pageNo)
  78. line = int(pageSize)
  79. try:
  80. equipment_version_qs = Equipment_Version.objects.filter()
  81. if mci:
  82. equipment_version_qs = equipment_version_qs.filter(mci=mci)
  83. if lang:
  84. equipment_version_qs = equipment_version_qs.filter(lang=lang)
  85. if version:
  86. equipment_version_qs = equipment_version_qs.filter(version__contains=version)
  87. total = equipment_version_qs.count()
  88. equipment_version_qs = equipment_version_qs.values()[(page - 1) * line:page * line]
  89. equipment_version_list = CommonService.qs_to_list(equipment_version_qs)
  90. return response.json(0, {'list': equipment_version_list, 'total': total})
  91. except Exception as e:
  92. print(e)
  93. return response.json(500, repr(e))
  94. def upLoadFile(self, request, request_dict, response):
  95. file = request.FILES.get('file', None)
  96. mci = request_dict.get('mci', '')
  97. lang = request_dict.get('lang', '')
  98. ESN = request_dict.get('ESN', '')
  99. max_ver = request_dict.get('max_ver', '')
  100. channel = request_dict.get('channel', '')
  101. resolutionRatio = request_dict.get('resolutionRatio', '')
  102. Description = request_dict.get('Description', '')
  103. status = request_dict.get('status', 0)
  104. isPopup = request_dict.get('isPopup', 0)
  105. if not all([file, mci, lang, ESN, max_ver, channel, resolutionRatio]):
  106. return response.json(444)
  107. try:
  108. nowTime = CommonService.timestamp_to_str(timestamp=int(time.time()))
  109. channel = int(channel)
  110. resolutionRatio = int(resolutionRatio)
  111. status = int(status)
  112. isPopup = int(isPopup)
  113. # 文件名为设备版本,最后一个'.'的前面为软件版本,后面为设备规格名称
  114. # V2.2.4.16E201252CA,软件版本:2.2.4,设备规格名称:16E201252CA
  115. # V1.7.2.36C11680X30411F000600000150001Z,软件版本:1.7.2,设备规格名称:36C11680X30411F000600000150001Z
  116. file_name = str(file) # 文件名
  117. # .img和.tar.gz文件
  118. file_type_index = file_name.find('.img')
  119. if file_type_index == -1:
  120. file_type_index = file_name.find('.tar')
  121. if file_type_index == -1:
  122. return response.json(903)
  123. version = file_name[:file_type_index] # 设备版本
  124. version_index = version.rindex('.')
  125. softwareVersion = version[1:version_index] # 软件版本
  126. code = version[version_index + 1:] # 设备规格名称
  127. chipModelList2Code = code[:4] # 主芯片
  128. type = code[8:10] # 设备机型
  129. companyCode = code[-1:] # 公司代码
  130. fileSize = file.size
  131. filePath = '/'.join(('static/otapack', mci, lang, file_name))
  132. file_data = file.read()
  133. fileMd5 = hashlib.md5(file_data).hexdigest()
  134. data_dict = {'mci': mci, 'lang': lang, 'ESN': ESN, 'max_ver': max_ver, 'channel': channel,
  135. 'resolutionRatio': resolutionRatio, 'Description': Description, 'status': status,
  136. 'version': version, 'softwareVersion': softwareVersion, 'code': code,
  137. 'chipModelList2Code': chipModelList2Code, 'type': type, 'companyCode': companyCode,
  138. 'fileSize': fileSize, 'filePath': filePath, 'fileMd5': fileMd5, 'update_time': nowTime,
  139. 'is_popup': isPopup}
  140. # Equipment_Version表创建或更新数据
  141. equipment_version_qs = Equipment_Version.objects.filter(code=code, lang=lang)
  142. if not equipment_version_qs.exists():
  143. Equipment_Version.objects.create(eid=CommonService.getUserID(getUser=False, setOTAID=True),
  144. **data_dict)
  145. else:
  146. equipment_version_qs.update(**data_dict)
  147. # 上传文件到服务器
  148. upload_path = '/'.join((BASE_DIR, 'static/otapack', mci, lang)).replace('\\', '/') + '/'
  149. if not os.path.exists(upload_path): # 上传目录不存在则创建
  150. os.makedirs(upload_path)
  151. # 文件上传
  152. full_name = upload_path + file_name
  153. if os.path.exists(full_name): # 删除同名文件
  154. os.remove(full_name)
  155. with open(full_name, 'wb+') as write_file:
  156. for chunk in file.chunks():
  157. write_file.write(chunk)
  158. return response.json(0)
  159. except Exception as e:
  160. print(e)
  161. return response.json(500, repr(e))
  162. def editVersionInformation(self, request_dict, response):
  163. eid = request_dict.get('eid', None)
  164. ESN = request_dict.get('ESN', '')
  165. max_ver = request_dict.get('max_ver', '')
  166. status = request_dict.get('status', '')
  167. channel = request_dict.get('channel', '')
  168. resolutionRatio = request_dict.get('resolutionRatio', '')
  169. Description = request_dict.get('Description', '')
  170. is_popup = request_dict.get('is_popup', '')
  171. if not eid:
  172. return response.json(444)
  173. status = 1 if status == 'true' else 0
  174. try:
  175. equipment_version_qs = Equipment_Version.objects.filter(eid=eid)
  176. if not equipment_version_qs.exists():
  177. return response.json(173)
  178. data_dict = {'ESN': ESN, 'max_ver': max_ver, 'status': status, 'channel': channel,
  179. 'resolutionRatio': resolutionRatio, 'Description': Description,
  180. 'is_popup': is_popup}
  181. equipment_version_qs.update(**data_dict)
  182. return response.json(0)
  183. except Exception as e:
  184. print(e)
  185. return response.json(500, repr(e))
  186. def deleteEquipmentVersion(self, request_dict, response):
  187. eid = request_dict.get('eid', None)
  188. if not eid:
  189. return response.json(444)
  190. try:
  191. equipment_version_qs = Equipment_Version.objects.filter(eid=eid)
  192. filePath = equipment_version_qs.values('filePath')[0]['filePath']
  193. equipment_version_qs.delete()
  194. # 删除文件
  195. full_name = '/'.join((BASE_DIR, filePath)).replace('\\', '/')
  196. if os.path.exists(full_name):
  197. os.remove(full_name)
  198. return response.json(0)
  199. except Exception as e:
  200. print(e)
  201. return response.json(500, repr(e))
  202. def getAppVersionList(self, request_dict, response):
  203. app_type = request_dict.get('app_type', None)
  204. appName = request_dict.get('appName', None)
  205. version = request_dict.get('version', None)
  206. pageNo = request_dict.get('pageNo', None)
  207. pageSize = request_dict.get('pageSize', None)
  208. if not all([pageNo, pageSize]):
  209. return response.json(444)
  210. page = int(pageNo)
  211. line = int(pageSize)
  212. try:
  213. app_info_qs = App_Info.objects.filter()
  214. if app_type:
  215. if app_type == 'IOS':
  216. app_type = 1
  217. elif app_type == '安卓':
  218. app_type = 2
  219. else:
  220. app_type = 3
  221. app_info_qs = app_info_qs.filter(app_type=app_type)
  222. if appName:
  223. app_info_qs = app_info_qs.filter(appName__contains=appName)
  224. if version:
  225. app_info_qs = app_info_qs.filter(version__contains=version)
  226. total = app_info_qs.count()
  227. app_info_qs = app_info_qs.values()[(page - 1) * line:page * line]
  228. app_info_list = CommonService.qs_to_list(app_info_qs)
  229. return response.json(0, {'list': app_info_list, 'total': total})
  230. except Exception as e:
  231. print(e)
  232. return response.json(500, repr(e))
  233. def addOrEditAppInfo(self, request_dict, response):
  234. id = request_dict.get('id', None)
  235. appName = request_dict.get('appName', '')
  236. appBundleId = request_dict.get('appBundleId', '')
  237. bundleVersion = request_dict.get('bundleVersion', '')
  238. newAppversion = request_dict.get('newAppversion', '')
  239. minAppversion = request_dict.get('minAppversion', '')
  240. content = request_dict.get('content', '')
  241. app_type = request_dict.get('app_type', '')
  242. downloadLink = request_dict.get('downloadLink', '')
  243. try:
  244. app_type = int(app_type)
  245. data_dict = {'appName': appName, 'appBundleId': appBundleId, 'bundleVersion': bundleVersion,
  246. 'newAppversion': newAppversion, 'minAppversion': minAppversion, 'content': content,
  247. 'app_type': app_type, 'downloadLink': downloadLink}
  248. if not id: # 添加
  249. App_Info.objects.create(**data_dict)
  250. else: # 编辑
  251. app_info_qs = App_Info.objects.filter(id=id)
  252. if not app_info_qs.exists():
  253. return response.json(173)
  254. app_info_qs.update(**data_dict)
  255. return response.json(0)
  256. except Exception as e:
  257. print(e)
  258. return response.json(500, repr(e))
  259. def deleteAppVersion(self, request_dict, response):
  260. appBundleId = request_dict.get('appBundleId', None)
  261. if not appBundleId:
  262. return response.json(444)
  263. try:
  264. App_Info.objects.filter(appBundleId=appBundleId).delete()
  265. AppSetModel.objects.filter(appBundleId=appBundleId).delete()
  266. return response.json(0)
  267. except Exception as e:
  268. print(e)
  269. return response.json(500, repr(e))
  270. def getAppSet(self, request_dict, response):
  271. appBundleId = request_dict.get('appBundleId', None)
  272. if not appBundleId:
  273. return response.json(444)
  274. try:
  275. app_set_qs = AppSetModel.objects.filter(appBundleId=appBundleId).values('content')
  276. if app_set_qs.exists():
  277. content = app_set_qs[0]['content']
  278. return response.json(0, {'content': content})
  279. else:
  280. nowTime = int(time.time())
  281. AppSetModel.objects.create(
  282. appBundleId=appBundleId,
  283. addTime=nowTime,
  284. updTime=nowTime
  285. )
  286. return response.json(0)
  287. except Exception as e:
  288. print(e)
  289. return response.json(500, repr(e))
  290. def editAppSet(self, request_dict, response):
  291. appBundleId = request_dict.get('appBundleId', None)
  292. content = request_dict.get('content', None)
  293. if not all([appBundleId, content]):
  294. return response.json(444)
  295. try:
  296. AppSetModel.objects.filter(appBundleId=appBundleId).update(content=content)
  297. return response.json(0)
  298. except Exception as e:
  299. print(e)
  300. return response.json(500, repr(e))
  301. def getAppRecordList_1(self, request_dict, response):
  302. app_type = request_dict.get('app_type', 'IOS')
  303. pageNo = request_dict.get('pageNo', None)
  304. pageSize = request_dict.get('pageSize', None)
  305. if not all([pageNo, pageSize]):
  306. return response.json(444)
  307. page = int(pageNo)
  308. line = int(pageSize)
  309. try:
  310. if app_type:
  311. if app_type == 'IOS':
  312. app_type = 1
  313. elif app_type == '安卓':
  314. app_type = 2
  315. else:
  316. app_type = 3
  317. app_colophon_qs = App_Colophon.objects.filter(app_id__app_type=app_type).order_by('app_id').values_list('app_id__appBundleId', flat=True).distinct()
  318. if not app_colophon_qs.exists():
  319. return response.json(173)
  320. total = app_colophon_qs.count()
  321. app_colophon_list = list(app_colophon_qs[(page - 1) * line:page * line])
  322. app_info_qs = App_Colophon.objects.filter(app_id__appBundleId__in=app_colophon_list).\
  323. values("id", "lang", "newApp_version", "content","version_time", "app_id__appBundleId", "app_id__appName", "app_id__app_type")
  324. app_info_list = list(app_info_qs)
  325. data_dict = {}
  326. # 组装数据
  327. for app_info in app_info_list:
  328. for app_colophon in app_colophon_list:
  329. if app_colophon not in data_dict.keys():
  330. data_dict[app_colophon] = []
  331. if app_colophon == app_info['app_id__appBundleId']:
  332. data_dict[app_colophon].append(app_info)
  333. for k, v in enumerate(data_dict):
  334. new = sorted(data_dict[v], key=lambda x: x['id'], reverse=True)
  335. data_dict[v] = new
  336. res = {
  337. 'data_dict': data_dict,
  338. 'total': total
  339. }
  340. return response.json(0, res)
  341. except Exception as e:
  342. print(e)
  343. return response.json(500, repr(e))
  344. def getAppRecordList(self, request_dict, response):
  345. app_type = request_dict.get('appType', 'IOS')
  346. queryVersion = request_dict.get('queryVersion', None)
  347. queryAppBundleId = request_dict.get('queryAppBundleId', None)
  348. pageNo = request_dict.get('pageNo', None)
  349. pageSize = request_dict.get('pageSize', None)
  350. if not all([pageNo, pageSize]):
  351. return response.json(444)
  352. page = int(pageNo)
  353. line = int(pageSize)
  354. try:
  355. if app_type == 'IOS':
  356. app_type = 1
  357. elif app_type == '安卓':
  358. app_type = 2
  359. else:
  360. app_type = 3
  361. app_colophon_qs = App_Colophon.objects.filter(app_id__app_type=app_type).order_by('app_id').values_list('app_id__appBundleId', flat=True).distinct()
  362. if not app_colophon_qs.exists():
  363. return response.json(173)
  364. total = app_colophon_qs.count()
  365. app_colophon_list = list(app_colophon_qs[(page - 1) * line:page * line])
  366. app_info_qs = App_Colophon.objects.filter(app_id__appBundleId__in=app_colophon_list).\
  367. values("id", "lang", "newApp_version", "content", "version_time", "app_id__appBundleId", "app_id__appName", "app_id__app_type")
  368. app_info_list = list(app_info_qs)
  369. app_record_list = [] # 响应的app record数据
  370. appBundleId_list = [] # 记录已添加过的appBundleId
  371. # 组装数据
  372. for app_info in app_info_list:
  373. version = app_info['lang'] + app_info['newApp_version']
  374. if app_info['app_id__appBundleId'] not in appBundleId_list:
  375. appBundleId_list.append(app_info['app_id__appBundleId'])
  376. newApp_version_list = [[app_info['lang'], app_info['newApp_version']]]
  377. app_record_dict = {
  378. 'app_id__appBundleId': app_info['app_id__appBundleId'],
  379. 'app_id__appName': app_info['app_id__appName'],
  380. 'app_id__app_type': app_info['app_id__app_type'],
  381. 'version': version,
  382. 'newApp_version_list': newApp_version_list,
  383. 'id': app_info['id'],
  384. 'content': app_info['content'],
  385. 'version_time': time.strftime("%Y-%m-%d", time.localtime(app_info['version_time'])),
  386. }
  387. if queryVersion and queryVersion == version and queryAppBundleId == app_info['app_id__appBundleId']:
  388. app_record_dict['id'] = app_info['id']
  389. app_record_dict['content'] = app_info['content']
  390. app_record_dict['version_time'] = time.strftime("%Y-%m-%d", time.localtime(app_info['version_time']))
  391. app_record_list.append(app_record_dict)
  392. else:
  393. index = appBundleId_list.index(app_info['app_id__appBundleId'])
  394. newApp_version_list = [app_info['lang'], app_info['newApp_version']]
  395. if queryVersion and queryVersion == version and queryAppBundleId == app_info['app_id__appBundleId']:
  396. # app_record_list里对应字典插入值
  397. app_record_list[index]['id'] = app_info['id']
  398. app_record_list[index]['content'] = app_info['content']
  399. app_record_list[index]['version_time'] = time.strftime("%Y-%m-%d", time.localtime(app_info['version_time']))
  400. app_record_list[index]['version'] = version
  401. app_record_list[index]['newApp_version_list'].insert(0, newApp_version_list)
  402. else:
  403. app_record_list[index]['newApp_version_list'].append(newApp_version_list)
  404. res = {
  405. 'app_record_list': app_record_list,
  406. 'total': total
  407. }
  408. return response.json(0, res)
  409. except Exception as e:
  410. print(e)
  411. return response.json(500, repr(e))
  412. def getAppBundleIdList(self, request_dict, response):
  413. print('request_dict:', request_dict)
  414. app_type = request_dict.get('appType', 'IOS')
  415. try:
  416. if app_type == 'IOS':
  417. app_type = 1
  418. elif app_type == '安卓':
  419. app_type = 2
  420. else:
  421. app_type = 3
  422. app_info_qs = App_Info.objects.filter(app_type=app_type).values('id', 'appBundleId')
  423. appBundleIdList = list(app_info_qs)
  424. return response.json(0, {'appBundleIdList': appBundleIdList})
  425. except Exception as e:
  426. print(e)
  427. return response.json(500, repr(e))
  428. def addOrEditAppRecord(self, request_dict, response):
  429. print('request_dict:', request_dict)
  430. appBundleId = request_dict.get('app_id__appBundleId', None)
  431. newApp_version = request_dict.get('version', None)
  432. version_time = request_dict.get('version_time', None)
  433. cn_content = request_dict.get('cnContent', None)
  434. en_content = request_dict.get('enContent', None)
  435. content = request_dict.get('content', None)
  436. app_colophon_id = request_dict.get('id', None)
  437. if not all([appBundleId, newApp_version, version_time]):
  438. return response.json(444)
  439. try:
  440. version_time = int(time.mktime(time.strptime(version_time, '%Y-%m-%d'))) # 字符串转时间戳
  441. if app_colophon_id: # 编辑
  442. # 编辑获取的版本信息前两位为语言
  443. lang = newApp_version[:2]
  444. newApp_version = newApp_version[2:]
  445. App_Colophon.objects.filter(id=app_colophon_id).update(lang=lang, newApp_version=newApp_version,
  446. content=content, version_time=version_time)
  447. else: # 添加
  448. app_info_qs = App_Info.objects.filter(appBundleId=appBundleId).values('id')
  449. if not app_info_qs.exists():
  450. return response.json(173)
  451. data_dict = {
  452. 'app_id_id': app_info_qs[0]['id'],
  453. 'newApp_version': newApp_version,
  454. 'version_time': version_time,
  455. 'lang': 'cn',
  456. 'content': cn_content,
  457. }
  458. with transaction.atomic():
  459. # 创建中文内容数据
  460. App_Colophon.objects.create(**data_dict)
  461. # 创建英文内容数据
  462. data_dict['lang'] = 'en'
  463. data_dict['content'] = en_content
  464. App_Colophon.objects.create(**data_dict)
  465. return response.json(0)
  466. except Exception as e:
  467. print(e)
  468. return response.json(500, repr(e))
  469. def deleteAppRecord(self, request_dict, response):
  470. print('request_dict:', request_dict)
  471. app_colophon_id = request_dict.get('app_colophon_id', None)
  472. try:
  473. if not app_colophon_id:
  474. return response.json(444)
  475. app_colophon_qs = App_Colophon.objects.filter(id=app_colophon_id)
  476. if not app_colophon_qs.exists():
  477. return response.json(173)
  478. app_colophon_qs.delete()
  479. return response.json(0)
  480. except Exception as e:
  481. print(e)
  482. return response.json(500, repr(e))
  483. def getPcInfoList(self, request_dict, response):
  484. print('request_dict:', request_dict)
  485. pc_name = request_dict.get('pcName', None)
  486. pageNo = request_dict.get('pageNo', None)
  487. pageSize = request_dict.get('pageSize', None)
  488. if not all([pageNo, pageSize]):
  489. return response.json(444)
  490. page = int(pageNo)
  491. line = int(pageSize)
  492. try:
  493. pc_info_qs = Pc_Info.objects.filter()
  494. if pc_name:
  495. pc_info_qs = Pc_Info.objects.filter(pc_name__contains=pc_name)
  496. if not pc_info_qs.exists():
  497. return response.json(173)
  498. total = pc_info_qs.count()
  499. pc_info_qs = pc_info_qs.values()[(page - 1) * line:page * line]
  500. pc_info_list = CommonService.qs_to_list(pc_info_qs)
  501. return response.json(0, {'list': pc_info_list, 'total': total})
  502. except Exception as e:
  503. print(e)
  504. return response.json(500, repr(e))
  505. def editPcVersion(self, request_dict, response):
  506. pc_info_id = request_dict.get('id', None)
  507. pc_name = request_dict.get('pc_name', '')
  508. bundle_version = request_dict.get('bundle_version', '')
  509. pc_version = request_dict.get('pc_version', '')
  510. pc_test = request_dict.get('pc_test', '')
  511. lang = request_dict.get('lang', '')
  512. file_type = request_dict.get('file_type', '')
  513. package = request_dict.get('package', '')
  514. explain = request_dict.get('explain', '')
  515. is_update = request_dict.get('is_update', '')
  516. is_open = request_dict.get('is_open', '')
  517. content = request_dict.get('content', '')
  518. authority = request_dict.get('authority', '')
  519. download_link = request_dict.get('download_link', '')
  520. if not pc_info_id:
  521. return response.json(444)
  522. try:
  523. pc_info_qs = Pc_Info.objects.filter(id=pc_info_id)
  524. if not pc_info_qs.exists():
  525. return response.json(173)
  526. data_dict = {
  527. 'pc_name': pc_name,
  528. 'bundle_version': bundle_version,
  529. 'pc_version': pc_version,
  530. 'pc_test': pc_test,
  531. 'lang': lang,
  532. 'file_type': file_type,
  533. 'package': package,
  534. 'explain': explain,
  535. 'is_update': is_update,
  536. 'is_open': is_open,
  537. 'content': content,
  538. 'authority': authority,
  539. 'download_link': download_link,
  540. }
  541. pc_info_qs.update(**data_dict)
  542. return response.json(0)
  543. except Exception as e:
  544. print(e)
  545. return response.json(500, repr(e))
  546. def deletePcInfo(self, request_dict, response):
  547. print('request_dict:', request_dict)
  548. pc_info_id = request_dict.get('id', None)
  549. try:
  550. if not pc_info_id:
  551. return response.json(444)
  552. pc_info_qs = Pc_Info.objects.filter(id=pc_info_id)
  553. if not pc_info_qs.exists():
  554. return response.json(173)
  555. # 删除存储桶的文件
  556. Key = pc_info_qs.values('download_link')[0]['download_link']
  557. pc_info_qs.delete()
  558. aws_s3_client = boto3.client(
  559. 's3',
  560. region_name='cn-northwest-1',
  561. aws_access_key_id=AWS_ACCESS_KEY_ID[0],
  562. aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
  563. config=botocore.client.Config(signature_version='s3v4'),
  564. )
  565. try:
  566. aws_s3_client.delete_object(Bucket='pc-package', Key=Key)
  567. finally:
  568. return response.json(0)
  569. except Exception as e:
  570. print(e)
  571. return response.json(500, repr(e))