Browse Source

PC更新包添加字段

lhq 4 years ago
parent
commit
b69b848acd
2 changed files with 179 additions and 175 deletions
  1. 178 175
      Controller/PcInfo.py
  2. 1 0
      Model/models.py

+ 178 - 175
Controller/PcInfo.py

@@ -44,22 +44,22 @@ class PcInfo(View):
 
             if operation == 'query':    # pc端调用查询
                 return self.query(request_dict, response)
-            elif operation == 'queryall':   # 后台查询
-                return self.queryall(request_dict, response)
+            elif operation == 's3addandupload':
+                return self.s3addandupload(request_dict, response, request)
+            elif operation == 's3download':
+                return self.s3download(request_dict, response)
+            elif operation == 's3delete':
+                return self.s3delete(request_dict, response)
             elif operation == 'getnewversion':   # 获取当前软件的最新版本
                 return self.getnewversion(request_dict, response)
+            elif operation == 'queryall':   # 后台查询
+                return self.queryall(request_dict, response)
             elif operation == 'addandupload':   # 上传到服务器
                 return self.addandupload(request_dict, response, request)
             elif operation == 'download':   # 服务器下载
                 return self.download(request_dict, response)
             elif operation == 'delete':
                 return self.delete(request_dict, response)
-            elif operation == 's3addandupload':
-                return self.s3addandupload(request_dict, response, request)
-            elif operation == 's3download':
-                return self.s3download(request_dict, response)
-            elif operation == 's3delete':
-                return self.s3delete(request_dict, response)
             else:
                 return response.json(414)
 
@@ -97,77 +97,6 @@ class PcInfo(View):
                    'response_url': response_url}
             return response.json(0, res)
 
-    def addandupload(self, request_dict, response, request):
-        token = request_dict.get('token', None)
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code != 0:
-            return response.json(tko.code)
-        userID = tko.userID
-        if not userID:
-            return response.json(104)
-        pc_name = request_dict.get('pc_name', None)
-        bundle_version = request_dict.get('bundle_version', None)
-        pc_version = request_dict.get('pc_version', None)
-        pc_test = request_dict.get('pc_test', None)
-        lang = request_dict.get('lang', None)
-        file_name = request.FILES.get('file_name', None)
-        param_flag = CommonService.get_param_flag(
-            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name])
-        if param_flag is not True:
-            return response.json(444)
-        else:
-            file = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version,
-                                          pc_version=pc_version, pc_test=pc_test)
-            if file:
-                return response.json(174)
-            try:
-                # 安装包上传到服务器本地
-                file_path = 'static/pc/' + pc_name
-                if not os.path.exists(file_path):
-                    os.makedirs(os.path.join(BASE_DIR, file_path))
-                a = os.path.splitext(str(file_name))[-1]
-                if not a:
-                    return response.json(444, "文件无后缀")
-                name = pc_version + '_' + bundle_version + '_' + pc_test + str(a)
-                file_path = file_path + '/' + str(name)
-                upload_path = os.path.join(BASE_DIR, file_path)
-                print('upload_path:', upload_path)
-                with open(upload_path, 'wb+') as destination:
-                    for chunk in file_name.chunks():
-                        destination.write(chunk)
-                add_time = time.time()
-                create_dict = {
-                    'pc_name': pc_name,
-                    'bundle_version': bundle_version,
-                    'pc_version': pc_version,
-                    'pc_test': pc_test,
-                    'lang': lang,
-                    'download_link': file_path,
-                    'add_time': add_time,
-                    'update_time': add_time
-                }
-                pc_Info = Pc_Info(**create_dict)
-                pc_Info.save()
-            except Exception:
-                errorInfo = traceback.format_exc()
-                print(errorInfo)
-                return response.json(700, {'details': errorInfo})
-            else:
-                if pc_Info.id:
-                    res = {'pc_name': pc_Info.pc_name,
-                           'bundle_version': pc_Info.bundle_version,
-                           'pc_version': pc_Info.pc_version,
-                           'pc_test': pc_Info.pc_test,
-                           'download_link': pc_Info.download_link,
-                           'lang': pc_Info.lang,
-                           'add_time': pc_Info.add_time,
-                           'update_time': pc_Info.update_time
-                           }
-                    return response.json(0, res)
-                else:
-                    return response.json(500)
-
     def query(self, request_dict, response):
         pc_name = request_dict.get('pc_name', None)
         package = request_dict.get('package', None)
@@ -188,100 +117,6 @@ class PcInfo(View):
         send_json['count'] = count
         return response.json(0, send_json)
 
-    def queryall(self, request_dict, response):
-        token = request_dict.get('token', None)
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code != 0:
-            return response.json(tko.code)
-        userID = tko.userID
-        if not userID:
-            return response.json(104)
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if page is None or line is None:
-            return response.json(444, 'page,line')
-        queryset = Pc_Info.objects.all()
-        if queryset.exists():
-            count = queryset.count()
-            res = queryset[(page - 1) * line:page * line]
-            send_json = CommonService.qs_to_dict(res)
-            send_json['count'] = count
-            return response.json(0, send_json)
-        else:
-            return response.json(173)
-
-    def download(self, request_dict, response):
-        pc_name = request_dict.get('pc_name', None)
-        bundle_version = request_dict.get('bundle_version', None)
-        pc_version = request_dict.get('pc_version', None)
-        pc_test = request_dict.get('pc_test', None)
-        param_flag = CommonService.get_param_flag(
-            data=[pc_name, bundle_version, pc_version, pc_test])
-        if param_flag is not True:
-            return response.json(444)
-        path = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_version=pc_version,
-                                      pc_test=pc_test).values('download_link')
-        if not path:
-            return response.json(173)
-        filepath = path[0]['download_link']
-        fullPath = os.path.join(BASE_DIR, filepath)
-        fullPath.replace('\\', '/')
-        res = ResponseObject()
-        print('fullPath:')
-        print(fullPath)
-        print(os.path.basename(fullPath))
-        if fullPath:
-            if os.path.isfile(fullPath):
-                try:
-                    wrapper = FileWrapper(open(fullPath, 'rb'))
-                    response = HttpResponse(wrapper, content_type="application/octet-stream")
-                    response['Content-Length'] = os.path.getsize(fullPath)
-                    response['Content-Disposition'] = 'attachment; filename={}'.format(parse.quote_plus(os.path.basename(fullPath), encoding="utf-8"))
-                    response['Content-MD5'] = getMD5orSHA265(fullPath)
-                    # 校验文件md5值
-                    response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
-                    response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
-                    response['Content-Error'] = res.formal(0)
-                    return response
-                except Exception as e:
-                    return res.json(906, repr(e))
-            else:
-                return res.json(907)
-        else:
-            return res.json(444, 'fullPath')
-
-    def delete(self, request_dict, response):
-        token = request_dict.get('token', None)
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code != 0:
-            return response.json(tko.code)
-        userID = tko.userID
-        if not userID:
-            return response.json(104)
-        id = request_dict.get('id', None)
-        param_flag = CommonService.get_param_flag(data=[id])
-        if param_flag is not True:
-            return response.json(444)
-        file = Pc_Info.objects.filter(id=id)
-        if not file.exists():
-            return response.json(173)
-        try:
-            # 删除文件,文件夹和数据库里的相应数据
-            file_path = file[0].download_link
-            file_path = os.path.join(BASE_DIR, file_path).replace('\\', '/')
-            os.remove(file_path)
-            # file_path = file_path.split("/")
-            # file_path = [str(i) for i in file_path][:-1]
-            # file_path = "/".join(file_path)
-            # shutil.rmtree(file_path)
-            file.delete()
-        except Exception as e:
-            return response.json(176, repr(e))
-        else:
-            return response.json(0)
-
     def s3addandupload(self, request_dict, response, request):
         logger = logging.getLogger('info')
         logger.info('s3方式上传参数:')
@@ -302,6 +137,7 @@ class PcInfo(View):
         file_name = request.FILES.get('file_name', None)
         file_type = request_dict.get('file_type', None)
         package = request_dict.get('package', None)
+        explain = request_dict.get('explain', '')
         logger.info('文件名字:')
         logger.info(file_name)
         param_flag = CommonService.get_param_flag(
@@ -348,7 +184,8 @@ class PcInfo(View):
                     'add_time': add_time,
                     'update_time': add_time,
                     'file_type': file_type,
-                    'package': package
+                    'package': package,
+                    'explain': explain
                 }
                 pc_Info = Pc_Info(**create_dict)
                 pc_Info.save()
@@ -368,7 +205,8 @@ class PcInfo(View):
                            'add_time': pc_Info.add_time,
                            'update_time': pc_Info.update_time,
                            'file_type': pc_Info.file_type,
-                           'package': pc_Info.package
+                           'package': pc_Info.package,
+                           'explain': pc_Info.explain
                            }
                     return response.json(0, res)
                 else:
@@ -446,6 +284,171 @@ class PcInfo(View):
         else:
             return response.json(0)
 
+    def queryall(self, request_dict, response):
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if not userID:
+            return response.json(104)
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        if page is None or line is None:
+            return response.json(444, 'page,line')
+        queryset = Pc_Info.objects.all()
+        if queryset.exists():
+            count = queryset.count()
+            res = queryset[(page - 1) * line:page * line]
+            send_json = CommonService.qs_to_dict(res)
+            send_json['count'] = count
+            return response.json(0, send_json)
+        else:
+            return response.json(173)
+
+    def addandupload(self, request_dict, response, request):
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if not userID:
+            return response.json(104)
+        pc_name = request_dict.get('pc_name', None)
+        bundle_version = request_dict.get('bundle_version', None)
+        pc_version = request_dict.get('pc_version', None)
+        pc_test = request_dict.get('pc_test', None)
+        lang = request_dict.get('lang', None)
+        file_name = request.FILES.get('file_name', None)
+        param_flag = CommonService.get_param_flag(
+            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name])
+        if param_flag is not True:
+            return response.json(444)
+        else:
+            file = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version,
+                                          pc_version=pc_version, pc_test=pc_test)
+            if file:
+                return response.json(174)
+            try:
+                # 安装包上传到服务器本地
+                file_path = 'static/pc/' + pc_name
+                if not os.path.exists(file_path):
+                    os.makedirs(os.path.join(BASE_DIR, file_path))
+                a = os.path.splitext(str(file_name))[-1]
+                if not a:
+                    return response.json(444, "文件无后缀")
+                name = pc_version + '_' + bundle_version + '_' + pc_test + str(a)
+                file_path = file_path + '/' + str(name)
+                upload_path = os.path.join(BASE_DIR, file_path)
+                print('upload_path:', upload_path)
+                with open(upload_path, 'wb+') as destination:
+                    for chunk in file_name.chunks():
+                        destination.write(chunk)
+                add_time = time.time()
+                create_dict = {
+                    'pc_name': pc_name,
+                    'bundle_version': bundle_version,
+                    'pc_version': pc_version,
+                    'pc_test': pc_test,
+                    'lang': lang,
+                    'download_link': file_path,
+                    'add_time': add_time,
+                    'update_time': add_time
+                }
+                pc_Info = Pc_Info(**create_dict)
+                pc_Info.save()
+            except Exception:
+                errorInfo = traceback.format_exc()
+                print(errorInfo)
+                return response.json(700, {'details': errorInfo})
+            else:
+                if pc_Info.id:
+                    res = {'pc_name': pc_Info.pc_name,
+                           'bundle_version': pc_Info.bundle_version,
+                           'pc_version': pc_Info.pc_version,
+                           'pc_test': pc_Info.pc_test,
+                           'download_link': pc_Info.download_link,
+                           'lang': pc_Info.lang,
+                           'add_time': pc_Info.add_time,
+                           'update_time': pc_Info.update_time
+                           }
+                    return response.json(0, res)
+                else:
+                    return response.json(500)
+
+
+    def download(self, request_dict, response):
+        pc_name = request_dict.get('pc_name', None)
+        bundle_version = request_dict.get('bundle_version', None)
+        pc_version = request_dict.get('pc_version', None)
+        pc_test = request_dict.get('pc_test', None)
+        param_flag = CommonService.get_param_flag(
+            data=[pc_name, bundle_version, pc_version, pc_test])
+        if param_flag is not True:
+            return response.json(444)
+        path = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_version=pc_version,
+                                      pc_test=pc_test).values('download_link')
+        if not path:
+            return response.json(173)
+        filepath = path[0]['download_link']
+        fullPath = os.path.join(BASE_DIR, filepath)
+        fullPath.replace('\\', '/')
+        res = ResponseObject()
+        print('fullPath:')
+        print(fullPath)
+        print(os.path.basename(fullPath))
+        if fullPath:
+            if os.path.isfile(fullPath):
+                try:
+                    wrapper = FileWrapper(open(fullPath, 'rb'))
+                    response = HttpResponse(wrapper, content_type="application/octet-stream")
+                    response['Content-Length'] = os.path.getsize(fullPath)
+                    response['Content-Disposition'] = 'attachment; filename={}'.format(parse.quote_plus(os.path.basename(fullPath), encoding="utf-8"))
+                    response['Content-MD5'] = getMD5orSHA265(fullPath)
+                    # 校验文件md5值
+                    response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
+                    response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
+                    response['Content-Error'] = res.formal(0)
+                    return response
+                except Exception as e:
+                    return res.json(906, repr(e))
+            else:
+                return res.json(907)
+        else:
+            return res.json(444, 'fullPath')
+
+    def delete(self, request_dict, response):
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if not userID:
+            return response.json(104)
+        id = request_dict.get('id', None)
+        param_flag = CommonService.get_param_flag(data=[id])
+        if param_flag is not True:
+            return response.json(444)
+        file = Pc_Info.objects.filter(id=id)
+        if not file.exists():
+            return response.json(173)
+        try:
+            # 删除文件,文件夹和数据库里的相应数据
+            file_path = file[0].download_link
+            file_path = os.path.join(BASE_DIR, file_path).replace('\\', '/')
+            os.remove(file_path)
+            # file_path = file_path.split("/")
+            # file_path = [str(i) for i in file_path][:-1]
+            # file_path = "/".join(file_path)
+            # shutil.rmtree(file_path)
+            file.delete()
+        except Exception as e:
+            return response.json(176, repr(e))
+        else:
+            return response.json(0)
 
 def getMD5orSHA265(fileName, encryptionType='MD5'):
     """

+ 1 - 0
Model/models.py

@@ -1583,6 +1583,7 @@ class Pc_Info(models.Model):
     update_time = models.IntegerField(verbose_name='更新时间', default=0)
     file_type = models.CharField(blank=True, max_length=32, verbose_name=u'文件类型')
     package = models.CharField(blank=True, max_length=32, verbose_name=u'整合包id')
+    explain = models.TextField(blank=True, default='', verbose_name=u'更新内容')
 
     class Meta:
         db_table = 'pc_info'