浏览代码

新品体验官

peng 1 年之前
父节点
当前提交
682e5153e5
共有 1 个文件被更改,包括 73 次插入4 次删除
  1. 73 4
      Controller/shareUserPermission.py

+ 73 - 4
Controller/shareUserPermission.py

@@ -1,11 +1,13 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
+import time
+
 from django.core import serializers
 import traceback, simplejson as json
 from django.views.generic.base import View
 from django.views.decorators.csrf import csrf_exempt
 from django.utils.decorators import method_decorator
-from Model.models import Device_User, Device_Info, Role, UserExModel
+from Model.models import Device_User, Device_Info, Role, UserExModel, DeviceUserPermissions, DeviceSharePermission
 from Service.CommonService import CommonService
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -166,6 +168,7 @@ class shareUserEquipmentView(View):
         GuestID = queryDict.get('guestID', None)
         content = queryDict.get('content', None)
         sharedAll = queryDict.get('sharedAll', False)
+        permission_ids = queryDict.get('permissionIds', None)
 
         if sharedAll in ('1', '0'):
             sharedAll = bool(int(sharedAll))
@@ -183,18 +186,21 @@ class shareUserEquipmentView(View):
             return response.json(tko.code)
         MasterID = tko.userID
         if sharedAll and MasterID != None:
-            return self.shareUserSQL(MasterID, GuestID, True, response, args, kwargs)
+            return self.shareUserSQL(MasterID, GuestID, True, permission_ids, response, args, kwargs)
         if content != None and MasterID != None:
-            return self.shareUserSQL(MasterID, GuestID, False, response, args, content=content)
+            return self.shareUserSQL(MasterID, GuestID, False, permission_ids, response, args, content=content)
         else:
             return response.json(444, 'sharedAll or content')
 
-    def shareUserSQL(self, MasterID, GuestID, sharedAll, response, *args, **kwargs):
+    def shareUserSQL(self, MasterID, GuestID, sharedAll, permission_ids, response, *args, **kwargs):
         Guest = Device_User.objects.filter(userID=GuestID).order_by('-data_joined')
         Master = Device_Info.objects.filter(userID_id=MasterID).order_by('-data_joined')
         if not Master or not Guest:
             return response.json(104)
         querysetList = []
+        permission_list = []
+        p_ids = [int(val) for val in permission_ids.split(',')] if permission_ids else []
+        now_time = int(time.time())
         dictLen = 0
         if sharedAll:
             for equipment in Master:
@@ -214,6 +220,10 @@ class shareUserEquipmentView(View):
                     eqDict['userID_id'] = GuestID
                     eqDict['id'] = CommonService.getUserID(getUser=False)
                     querysetList.append(Device_Info(**eqDict))
+                    for permission_id in p_ids:
+                        permission_list.append(DeviceUserPermissions(permission_id=permission_id, user_id=GuestID,
+                                                                     uid=eqDict.get('UID', None),
+                                                                     created_time=now_time))
         else:
             content = kwargs.get('content', None)
             if content != None:
@@ -237,6 +247,11 @@ class shareUserEquipmentView(View):
                             eqDict['userID_id'] = GuestID
                             eqDict['id'] = CommonService.getUserID(getUser=False)
                             querysetList.append(Device_Info(**eqDict))
+                            for permission_id in p_ids:
+                                permission_list.append(DeviceUserPermissions(permission_id=permission_id,
+                                                                             user_id=GuestID,
+                                                                             uid=eqDict.get('UID', None),
+                                                                             created_time=now_time))
                     else:
                         continue
 
@@ -245,6 +260,7 @@ class shareUserEquipmentView(View):
         else:
             try:
                 Device_Info.objects.bulk_create(querysetList)
+                DeviceUserPermissions.objects.bulk_create(permission_list)
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 print('添加数据库记录错误: %s' % errorInfo)
@@ -335,6 +351,7 @@ class unsharedUserEquipmentView(View):
                         else:
                             errorUID.append(uid)
                             continue
+                        DeviceUserPermissions.objects.filter(user_id=GuestID, uid=uid).delete()
                     except Exception as e:
                         errorInfo = traceback.format_exc()
                         print('查询数据库错误: %s' % errorInfo)
@@ -350,3 +367,55 @@ class unsharedUserEquipmentView(View):
                         return response.json(173, {'removeCount': removeCount, 'error_UID': errorUID})
                     else:
                         return response.json(0, {'removeCount': removeCount})
+
+
+class SharePermissionsView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(SharePermissionsView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request, request.GET, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request, request.POST, operation)
+
+    def validation(self, request, request_dict, operation):
+        lang = request_dict.get('lang', 'en')
+        response = ResponseObject(lang)
+        if operation == 'get-permission-list':  # 获取分享权限列表
+            return self.get_permission_list(request_dict, response)
+        else:
+            token = request_dict.get('token', None)
+            # 设备主键uid
+            tko = TokenObject(token)
+            if tko.code != 0:
+                return response.json(tko.code)
+            user_id = tko.userID
+            if operation == 'edit-user-permission':  # 获取用户设备分享权限
+                return self.edit_user_permission(user_id, request_dict, response)
+            else:
+                return response.json(404)
+
+    @staticmethod
+    def get_permission_list(request_dict, response):
+        permission_qs = DeviceSharePermission.objects.filter(share_type=2).values('id', 'code').order_by('sort')
+        return response.json(0, list(permission_qs))
+
+    @staticmethod
+    def edit_user_permission(user_id, request_dict, response):
+        uid = request_dict.get('uid', None)
+        permission_ids = request_dict.get('permissionIds', None)
+        if not all([uid, permission_ids]):
+            return response.json(444)
+        permission_ids_list = [int(val) for val in permission_ids.split(',')] if permission_ids else []
+        now_time = int(time.time())
+        DeviceUserPermissions.objects.filter(user_id=user_id, uid=uid).delete()
+        for permission_id in permission_ids_list:
+            DeviceUserPermissions.objects.create(permission_id=permission_id, user_id=user_id, uid=uid,
+                                                 created_time=now_time)
+        return response.json(0)