chenjunkai 6 年 前
コミット
6b4c30433a
4 ファイル変更35 行追加87 行削除
  1. 0 13
      Ansjer/test/coposs_sts.py
  2. 12 28
      Controller/EquipmentManager.py
  3. 2 2
      Model/models.py
  4. 21 44
      Service/ModelService.py

+ 0 - 13
Ansjer/test/coposs_sts.py

@@ -1,16 +1,3 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerFormal
-@software: PyCharm
-@DATE: 2018/11/8 9:23
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: oss_sts.py
-@Contact: chanjunkai@163.com
-"""
 # -*- coding: utf-8 -*-
 '''
 生成sts上传授权

+ 12 - 28
Controller/EquipmentManager.py

@@ -39,8 +39,10 @@ def addNewUserEquipment(userID, deviceContent, response):
                                     deviceData['NickName'] = is_bind[0].NickName
                                     if 'isShare' in deviceData:
                                         deviceData['isShare'] = True
+                                    bind_userID = is_bind[0].userID_id
                                     userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
-                                                             primaryUserID=is_bind[0].userID_id, userID_id=userID,
+                                                             primaryUserID=bind_userID,
+                                                             primaryMaster=ModelService.get_user_name(bind_userID),
                                                              **deviceData)
                                     userDevice.save()
                                 else:
@@ -164,49 +166,31 @@ def queryUserEquipmentInterface(request):
     elif request.method == 'GET':
         request.encoding = 'utf-8'
         request_dict = request.GET
-    else:
-        return response.json(801)
     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
+    ModelService.check_permission(userID,40)
     if not userID:
         return response.json(104)
     dvqs = Device_Info.objects.filter(userID_id=userID)
-    res = CommonService.qs_to_dict(dvqs)
-    datas = res['datas']
     uid_list = []
-    pm_master = []
-    for q in datas:
-        uid_list.append(q['fields']['UID'])
-        if q['fields']['UID']:
-            pm_master.append(q['fields']['primaryUserID'])
+    for q in dvqs:
+        uid_list.append(q.UID)
     ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
     ubql = CommonService.qs_to_list(ubqs)
     res = []
-    pm_names = Device_User.objects.filter(userID__in=pm_master).values_list('userID', 'username').distinct()
-    pm_dict = {}
-    for pm in pm_names:
-        pm_dict[pm[0]] = pm[1]
-    print(pm_names)
-    # 获取设备主用户名字
-    for p in datas:
-        p['fields']['vod'] = []
+    for p in dvqs:
+        p.vod = []
         for dm in ubql:
-            if p['fields']['UID'] == dm['uid']:
-                p['fields']['vod'].append(dm)
-        if p['fields']['isShare']:
-            p['fields']['primaryMaster'] = ''
-        else:
-            if p['fields']['primaryUserID'] in pm_dict.keys():
-                p['fields']['primaryMaster'] = pm_dict[p['fields']['primaryUserID']]
-            else:
-                p['fields']['primaryMaster'] = ''
+            if p.UID == dm['uid']:
+                p.vod.append(dm)
         res.append(p)
-    return response.json(0, {'datas': res})
+    resdict = CommonService.qs_to_dict(res)
+    return response.json(0, resdict)
 
 
 @csrf_exempt

+ 2 - 2
Model/models.py

@@ -266,8 +266,8 @@ class Device_Info(models.Model):
                                     help_text=u'0代表:SD、1代表:HD')
     isShare = models.BooleanField(blank=True, verbose_name=u'共享设备',
                                   help_text=u'是否为共享获取的设备', default=False)
-    primaryUserID = models.CharField(blank=True, verbose_name='主用户',
-                                     help_text=u'该设备的主用户', max_length=32, default='')
+    primaryUserID = models.CharField(blank=True, verbose_name='主用户id', max_length=32, default='')
+    primaryMaster = models.CharField(max_length=64, verbose_name=u'主用户名', default='')
     data_joined = models.DateTimeField(blank=True, verbose_name=u'设备添加时间', auto_now_add=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True, null=True)
 

+ 21 - 44
Service/ModelService.py

@@ -7,55 +7,35 @@ class ModelService:
     # 获取当前用户角色名
     @staticmethod
     def getRole(rid):
-        Roles = Role.objects.get(rid=rid)
-        return Roles.roleName
-
-    @staticmethod
-    def getValidateMember(userID):
-        device_user_query_set = Device_User.objects.get(userID=userID)
-        role_query_set = device_user_query_set.role.all()
-        role_dict = CommonService.qs_to_dict(role_query_set)
-        permission = role_dict["datas"][0]["fields"]["permission"]
-        if len(permission):
-            if 92 in permission:
-                return True
-        return False
+        return Role.objects.get(rid=rid).roleName
 
     # 获取用户所有权限
     @staticmethod
     def own_permission(userID):
-        device_user_query_set = Device_User.objects.get(userID=userID)
-        role_query_set = device_user_query_set.role.all()
-        if role_query_set.exists():
-            role_dict = CommonService.qs_to_dict(role_query_set)
-            permission = role_dict["datas"][0]["fields"]["permission"]
-            if len(permission):
-                return permission
+        permission = Device_User.objects.get(userID=userID).role.values_list('permission',flat=True)
+        if permission:
+            return list(permission)
         return []
 
     # 获取用户角色相关
     @staticmethod
     def own_role(userID):
-        device_user_query_set = Device_User.objects.get(userID=userID)
-        role_query_set = device_user_query_set.role.all()
-        if role_query_set.exists():
-            return {'rid': role_query_set[0].rid, 'roleName': role_query_set[0].roleName}
+        try:
+            role_qs = Device_User.objects.get(userID=userID).role.values('rid','roleName')
+            if role_qs.exists():
+                return {'rid': role_qs[0]['rid'], 'roleName': role_qs[0]['roleName']}
+        except Exception as e:
+            pass
         return {'rid': '', 'roleName': ''}
 
     # 检测权限有无
     @staticmethod
     def check_permission(userID, permID):
         try:
-            device_user_query_set = Device_User.objects.get(userID=userID)
-            if device_user_query_set:
-                role_query_set = device_user_query_set.role.all()
-                if role_query_set:
-                    role_dict = CommonService.qs_to_dict(role_query_set)
-                    permission = role_dict["datas"][0]["fields"]["permission"]
-                    print(permission)
-                    if len(permission) > 0:
-                        if permID in permission:
-                            return True
+            perm_list = Device_User.objects.get(userID=userID).role.values_list('permission', flat=True)
+            if perm_list:
+                if permID in perm_list:
+                    return True
         except Exception as e:
             return False
         return False
@@ -64,13 +44,10 @@ class ModelService:
     @staticmethod
     def check_user_own_device(userID, deviceID):
         try:
-            device_user = Device_User.objects.get(userID=userID)
-            device_info_queryset = device_user.device_info_set.all().values('id')
-            id_list = []
-            for id_dict in list(device_info_queryset):
-                id_list.append(id_dict['id'])
-            if deviceID in id_list:
-                return True
+            dvqs = Device_Info.objects.filter(userID_id=userID).values_list('id',flat=True)
+            if dvqs:
+                if deviceID in dvqs:
+                    return True
         except Exception as e:
             return False
         return False
@@ -78,8 +55,8 @@ class ModelService:
     # 根据设设备唯一名称UID判断是否拥有该设备
     @staticmethod
     def check_own_device(userID, UID):
-        device_info_queryset = Device_Info.objects.filter(userID_id=userID, UID=UID)
-        if device_info_queryset.exists():
+        dvqs = Device_Info.objects.filter(userID_id=userID, UID=UID)
+        if dvqs.exists():
             return True
         return False
 
@@ -125,4 +102,4 @@ class ModelService:
                                                           View_Password=View_Password, ChannelIndex=ChannelIndex)
         if device_info_queryset.exists():
             return True
-        return False
+        return False