|
@@ -1,11 +1,13 @@
|
|
#!/usr/bin/env python
|
|
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
|
+import time
|
|
|
|
+
|
|
from django.core import serializers
|
|
from django.core import serializers
|
|
import traceback, simplejson as json
|
|
import traceback, simplejson as json
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.utils.decorators import method_decorator
|
|
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 Service.CommonService import CommonService
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
@@ -166,6 +168,7 @@ class shareUserEquipmentView(View):
|
|
GuestID = queryDict.get('guestID', None)
|
|
GuestID = queryDict.get('guestID', None)
|
|
content = queryDict.get('content', None)
|
|
content = queryDict.get('content', None)
|
|
sharedAll = queryDict.get('sharedAll', False)
|
|
sharedAll = queryDict.get('sharedAll', False)
|
|
|
|
+ permission_ids = queryDict.get('permissionIds', None)
|
|
|
|
|
|
if sharedAll in ('1', '0'):
|
|
if sharedAll in ('1', '0'):
|
|
sharedAll = bool(int(sharedAll))
|
|
sharedAll = bool(int(sharedAll))
|
|
@@ -183,18 +186,21 @@ class shareUserEquipmentView(View):
|
|
return response.json(tko.code)
|
|
return response.json(tko.code)
|
|
MasterID = tko.userID
|
|
MasterID = tko.userID
|
|
if sharedAll and MasterID != None:
|
|
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:
|
|
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:
|
|
else:
|
|
return response.json(444, 'sharedAll or content')
|
|
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')
|
|
Guest = Device_User.objects.filter(userID=GuestID).order_by('-data_joined')
|
|
Master = Device_Info.objects.filter(userID_id=MasterID).order_by('-data_joined')
|
|
Master = Device_Info.objects.filter(userID_id=MasterID).order_by('-data_joined')
|
|
if not Master or not Guest:
|
|
if not Master or not Guest:
|
|
return response.json(104)
|
|
return response.json(104)
|
|
querysetList = []
|
|
querysetList = []
|
|
|
|
+ permission_list = []
|
|
|
|
+ p_ids = [int(val) for val in permission_ids.split(',')] if permission_ids else []
|
|
|
|
+ now_time = int(time.time())
|
|
dictLen = 0
|
|
dictLen = 0
|
|
if sharedAll:
|
|
if sharedAll:
|
|
for equipment in Master:
|
|
for equipment in Master:
|
|
@@ -214,6 +220,10 @@ class shareUserEquipmentView(View):
|
|
eqDict['userID_id'] = GuestID
|
|
eqDict['userID_id'] = GuestID
|
|
eqDict['id'] = CommonService.getUserID(getUser=False)
|
|
eqDict['id'] = CommonService.getUserID(getUser=False)
|
|
querysetList.append(Device_Info(**eqDict))
|
|
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:
|
|
else:
|
|
content = kwargs.get('content', None)
|
|
content = kwargs.get('content', None)
|
|
if content != None:
|
|
if content != None:
|
|
@@ -237,6 +247,11 @@ class shareUserEquipmentView(View):
|
|
eqDict['userID_id'] = GuestID
|
|
eqDict['userID_id'] = GuestID
|
|
eqDict['id'] = CommonService.getUserID(getUser=False)
|
|
eqDict['id'] = CommonService.getUserID(getUser=False)
|
|
querysetList.append(Device_Info(**eqDict))
|
|
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:
|
|
else:
|
|
continue
|
|
continue
|
|
|
|
|
|
@@ -245,6 +260,7 @@ class shareUserEquipmentView(View):
|
|
else:
|
|
else:
|
|
try:
|
|
try:
|
|
Device_Info.objects.bulk_create(querysetList)
|
|
Device_Info.objects.bulk_create(querysetList)
|
|
|
|
+ DeviceUserPermissions.objects.bulk_create(permission_list)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
errorInfo = traceback.format_exc()
|
|
errorInfo = traceback.format_exc()
|
|
print('添加数据库记录错误: %s' % errorInfo)
|
|
print('添加数据库记录错误: %s' % errorInfo)
|
|
@@ -335,6 +351,7 @@ class unsharedUserEquipmentView(View):
|
|
else:
|
|
else:
|
|
errorUID.append(uid)
|
|
errorUID.append(uid)
|
|
continue
|
|
continue
|
|
|
|
+ DeviceUserPermissions.objects.filter(user_id=GuestID, uid=uid).delete()
|
|
except Exception as e:
|
|
except Exception as e:
|
|
errorInfo = traceback.format_exc()
|
|
errorInfo = traceback.format_exc()
|
|
print('查询数据库错误: %s' % errorInfo)
|
|
print('查询数据库错误: %s' % errorInfo)
|
|
@@ -350,3 +367,55 @@ class unsharedUserEquipmentView(View):
|
|
return response.json(173, {'removeCount': removeCount, 'error_UID': errorUID})
|
|
return response.json(173, {'removeCount': removeCount, 'error_UID': errorUID})
|
|
else:
|
|
else:
|
|
return response.json(0, {'removeCount': removeCount})
|
|
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)
|