Browse Source

feature: 增加mci字段,区分设备类型

chenjunkai 6 năm trước cách đây
mục cha
commit
7661cc59ba
4 tập tin đã thay đổi với 80 bổ sung75 xóa
  1. 42 4
      Controller/EquipmentOTA.py
  2. 31 66
      Controller/OTAEquipment.py
  3. 3 3
      Model/models.py
  4. 4 2
      Service/CommonService.py

+ 42 - 4
Controller/EquipmentOTA.py

@@ -115,24 +115,23 @@ class EquipmentOTA(View):
         search_kwargs = CommonService.get_kwargs(data=content)
         qs = Equipment_Version.objects.filter(**search_kwargs)
         if not qs.exists():
-            return response.json(0,[])
+            return response.json(0, [])
         count = qs.count()
         res = qs[(page - 1) * line:page * line]
         send_json = CommonService.qs_to_dict(res)
         send_json['count'] = count
         return response.json(0, send_json)
 
-
     def update(self, request_dict, userID, response):
         eid = request_dict.get('eid', None)
         if eid is None:
-            return response.json(444,'eid')
+            return response.json(444, 'eid')
         own_permission = ModelService.check_perm(userID=userID, permID=230)
         if own_permission is not True:
             return response.json(404)
         ev = Equipment_Version.objects.filter(eid=eid)
         if not ev.exists():
-            return response.json(10,'ev none')
+            return response.json(10, 'ev none')
         status = request_dict.get('status', None)
         try:
             update_time = timezone.localtime(timezone.now())
@@ -142,3 +141,42 @@ class EquipmentOTA(View):
             pass
         else:
             return response.json(0, {'update_time': str(update_time)})
+
+
+class EquipmentVersionView(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):
+        response = ResponseObject()
+        if operation is None:
+            return response.json(444, 'error path')
+        token = request_dict.get('token', None)
+        # 设备主键uid
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        own_perm = ModelService.check_perm(userID, 30)
+        if own_perm is False:
+            return response.json(404)
+        if operation == 'query':
+            return self.do_query(request_dict, response)
+        else:
+            return response.json(444, 'error path')
+
+    def do_query(self, request_dict, response):
+        mci = request_dict.get('mci', None)
+        if mci is None:
+            return response.json(444, 'mci')
+        ev_qs = Equipment_Version.objects.filter(mci=mci).values()
+        res = CommonService.qs_to_list(ev_qs)
+        return response.json(0, res)

+ 31 - 66
Controller/OTAEquipment.py

@@ -17,56 +17,6 @@ from django.http import HttpResponse
 from Ansjer.config import BASE_DIR
 
 
-def addNewEquipmentVersion(deviceContent, token, response):
-    """
-    :param deviceContent:
-    :return:
-    """
-    if token is not None:
-        tko = TokenObject(token)
-        # 设置语言
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID
-            own_permission = ModelService.check_perm(userID=userID, permID=220)
-            if own_permission is True:
-                try:
-                    print(deviceContent)
-                    print(type(deviceContent))
-                    deviceData = json.loads(deviceContent)
-                except Exception as e:
-                    return response.json(444, repr(e))
-                else:
-                    version = deviceData.get('version', None)
-                    if version is not None:
-                        filePath = deviceData.get('filePath', None)
-
-                        if filePath is not None:
-                            try:
-                                deviceData['filePath'] = ','.join(filePath)
-                                equipmentVersion = Equipment_Version(
-                                    eid=CommonService.getUserID(getUser=False, setOTAID=True),
-                                    **deviceData)
-                                equipmentVersion.save()
-                            except Exception as e:
-                                errorInfo = traceback.format_exc()
-                                print('添加设备错误: %s ' % errorInfo)
-                                return response.json(444, repr(e))
-                            else:
-                                res = CommonService.qs_to_dict([equipmentVersion])
-                                return response.json(0, res)
-                        else:
-                            return response.json(444,'content')
-                    else:
-                        return response.json(444, 'content')
-
-            else:
-                return response.json(404)
-
-    else:
-        return response.json(309)
-
-
 def downloadUrl(fileType, fileCode, fileVersion, fileName):
     fullPath = os.path.join(BASE_DIR, "static/Upgrade").replace('\\', '/')
     if fileType == 'IPC':
@@ -176,11 +126,6 @@ def downloadUpdataFileUrl(request):
         return response
 
 
-'''
-http://192.168.136.40:8077/OTA/getEquipmentVersion?31AX162001A
-'''
-
-
 @csrf_exempt
 def getEquipmentVersionInterface(request):
     response = ResponseObject()
@@ -428,8 +373,6 @@ class getUploadFiletoDirView(TemplateView):
             return response.json(0, {'filePath': filePath})
 
 
-
-
 @csrf_exempt
 def addNewEquipmentVersionInterface(request):
     request.encoding = 'utf-8'
@@ -444,10 +387,32 @@ def addNewEquipmentVersionInterface(request):
     token = request_dict.get('token', None)
     deviceContent = str(deviceContent, encoding='utf-8')
     deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
-    if deviceContent is not None:
-        return addNewEquipmentVersion(deviceContent, token, response)
+    if deviceContent is None:
+        return response.json(444, 'content')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    own_perm = ModelService.check_perm(userID=userID, permID=220)
+    if own_perm is False:
+        return response.json(404)
+    try:
+        deviceData = json.loads(deviceContent)
+        version = deviceData.get('version', None)
+        filePath = deviceData.get('filePath', None)
+        if version is None or filePath is None:
+            return response.json(444, 'content')
+        deviceData['filePath'] = ','.join(filePath)
+        ev_qs = Equipment_Version(
+            eid=CommonService.getUserID(getUser=False, setOTAID=True),
+            **deviceData)
+        ev_qs.save()
+    except Exception as e:
+        return response.json(444, repr(e))
     else:
-        return response.json(800)
+        res = CommonService.qs_to_dict([ev_qs])
+        return response.json(0, res)
 
 
 def showAllEquipmentVersion(userID, response):
@@ -461,6 +426,7 @@ def showAllEquipmentVersion(userID, response):
     res = CommonService.qs_to_dict(qs)
     return response.json(0, res)
 
+
 # 检测ota更新包
 @csrf_exempt
 def getNewVerInterface(request):
@@ -475,7 +441,7 @@ def getNewVerInterface(request):
     token = request_dict.get('token', None)
     lang = request_dict.get('lang', None)
     if not code:
-        return response.json(444,'code')
+        return response.json(444, 'code')
     tko = TokenObject(token)
     response.lang = tko.lang
     if tko.code != 0:
@@ -500,6 +466,8 @@ def getNewVerInterface(request):
         })
     else:
         return response.json(902)
+
+
 # ota包上传
 class uploadOTAInterfaceView(TemplateView):
     @method_decorator(csrf_exempt)
@@ -525,7 +493,7 @@ class uploadOTAInterfaceView(TemplateView):
     def validate(self, token, fileName, fileType, language):
         response = ResponseObject()
         if not fileName or not fileType:
-            return response.json(444,'fileName,fileType')
+            return response.json(444, 'fileName,fileType')
         tko = TokenObject(token)
         response.lang = tko.lang
         if tko.code != 0:
@@ -538,7 +506,6 @@ class uploadOTAInterfaceView(TemplateView):
             return response.json(404)
         return self.upload_ota_file(fileName, response, fileType, language)
 
-
     def upload_ota_file(self, fileName, response, fileType, language):
         try:
             if not language:
@@ -573,8 +540,6 @@ class uploadOTAInterfaceView(TemplateView):
 
 
 # ota包下载
-# class downloadOTAInterfaceView(TemplateView):
-
 @csrf_exempt
 def downloadOTAInterface(request, fullPath, *callback_args, **callback_kwargs):
     res = ResponseObject()
@@ -598,4 +563,4 @@ def downloadOTAInterface(request, fullPath, *callback_args, **callback_kwargs):
         else:
             return res.json(907)
     else:
-        return res.json(444,'fullPath')
+        return res.json(444, 'fullPath')

+ 3 - 3
Model/models.py

@@ -101,7 +101,6 @@ class Role(models.Model):
     def natural_key(self):
         return (self.roleName,)
 
-
     def get_all_permission(self):
         perms = self.permission.all()
 
@@ -249,8 +248,8 @@ class Device_Info(models.Model):
     MirrorType = models.IntegerField(blank=True, default=0, verbose_name=u'镜像类型 0:关闭镜像,1:上下镜像,2:左右镜像,3:上下左右镜像')
     RecordType = models.IntegerField(blank=True, default=0, verbose_name=u'录像模式(0:关闭,1:全是录像,3:报警录像)')
     TimeZone = models.CharField(blank=True, max_length=50, default='', verbose_name=u'时区')
-    isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存') # 是否支持云存设备
-    isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除') # 是否被删除了(需主用户交互)
+    isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存')  # 是否支持云存设备
+    isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除')  # 是否被删除了(需主用户交互)
     ###
     REQUIRED_FIELDS = []
 
@@ -454,6 +453,7 @@ class Equipment_Version(models.Model):
     status = models.BooleanField(blank=True, default=True, verbose_name=u'是否开启更新状态')
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     lang = models.CharField(blank=True, default='en', max_length=32, verbose_name=u'ota包内置语言')
+    mci = models.CharField(default='', blank=True, max_length=10, verbose_name='设备类型')
 
     def __str__(self):
         return self.eid

+ 4 - 2
Service/CommonService.py

@@ -163,7 +163,7 @@ class CommonService:
     # 生成订单好
     @staticmethod
     def createOrderID():
-        random_id = CommonService.RandomStr(6,True)
+        random_id = CommonService.RandomStr(6, True)
         order_id = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + str(random_id)
         print('orderID:')
         print(order_id)
@@ -180,5 +180,7 @@ class CommonService:
                 ps['update_time'] = ps['update_time'].strftime("%Y-%m-%d %H:%M:%S")
             if 'end_time' in ps:
                 ps['end_time'] = ps['end_time'].strftime("%Y-%m-%d %H:%M:%S")
+            if 'data_joined' in ps:
+                ps['data_joined'] = ps['data_joined'].strftime("%Y-%m-%d %H:%M:%S")
             res.append(ps)
-        return res
+        return res