#!/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: 2019/3/4 16:30 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: DeviceShare.py @Contact: chanjunkai@163.com """ from django.views.generic.base import View from Model.models import Device_Info,Device_User from Object.ResponseObject import ResponseObject from Object.TokenObject import TokenObject from Ansjer.config import SERVER_DOMAIN import jwt from Service.CommonService import CommonService class DeviceShareView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.GET, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.POST, operation) def validation(self, request_dict, operation): response = ResponseObject() token = request_dict.get('token', None) if token: tko = TokenObject(token) if tko.code == 0: userID = tko.userID if operation == 'generateTokenUrl': return self.do_generate_token_url(userID, request_dict, response) elif operation == 'confirm': return self.do_confirm(userID,request_dict,response) elif operation == 'queryEq': return self.do_query_eq(userID, request_dict, response) elif operation == 'deleteEq': return self.do_delete_eq(userID, request_dict, response) else: return response.json(414) else: return response.json(tko.code) else: return response.json(444, {'param': 'token'}) def do_generate_token_url(self, userID, request_dict, response): UID = request_dict.get('UID', None) dvqs = Device_Info.objects.filter(UID=UID, userID_id=userID, isShare=False) if dvqs.exists(): data = {'sharer': userID, 'UID': UID} share_token = jwt.encode(data, 'jwt.#^^&', algorithm='HS256') share_url = '{SERVER_DOMAIN}deviceShare/confirm?shareToken={shareToken}' \ .format(SERVER_DOMAIN=SERVER_DOMAIN, shareToken=share_token.decode('utf-8')) return response.json(0, {'share_url': share_url}) else: return response.json(173) def do_confirm(self, userID, request_dict, response): shareToken = request_dict.get('shareToken', None) if shareToken is not None: data = jwt.decode(shareToken, 'jwt.#^^&', algorithms='HS256') # 分享者userID sharer = data.get('sharer', None) # 分享的uid UID = data.get('UID', None) dval = Device_Info.objects.filter(userID_id=userID, UID=UID) if not dval.exists(): try: sharerUser = Device_User.objects.get(userID=userID) sharerDvqs = Device_Info.objects.get(userID_id=sharer, UID=UID) except Exception as e: return response.json(10, repr(e)) else: sharerDvqs.id = CommonService.getUserID(getUser=False) sharerDvqs.userID_id = userID sharerDvqs.isShare = True sharerDvqs.primaryUserID = sharer if sharerUser.username: primaryMaster = sharerUser.username elif sharerUser.userEmail: primaryMaster = sharerUser.userEmail elif sharerUser.phone: primaryMaster = sharerUser.phone else: return response.json(178) sharerDvqs.primaryMaster = primaryMaster sharerDvqs.data_joined = None sharerDvqs.save() return response.json(0) else: return response.json(174) else: return response.json(444, {'param': 'shareToken'}) # http://192.168.136.39:8000/deviceShare/queryEq?token=XXX&UID=jLBDSU9547NTRSMF111A def do_query_eq(self, userID, request_dict, response): UID = request_dict.get('UID', None) if UID is not None: qs = Device_Info.objects.filter(UID=UID, userID_id=userID, isShare=True) if not qs.exists(): print ('没有数据') return response.json(0) else: send_json = CommonService.qs_to_dict(qs) print (send_json) return response.json(0, send_json) else: return response.json(444, {'param': 'UID'}) # http://192.168.136.39:8000/deviceShare/deleteEq?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTIzNzc1NjN9.krA4C-TnTMuFQW1SBCuXQ8ZNLMB3cOD8z2W03agKvRY&id=138001380001546932860064934 def do_delete_eq(self, userID, request_dict, response): id = request_dict.get('id', None) if id: qs=Device_Info.objects.filter(id=id, userID_id=userID) print (qs) if qs.exists(): send_json = CommonService.qs_to_dict(qs) print (len(send_json.get('datas'))>0) if (len(send_json.get('datas'))>0): if send_json.get('datas')[0].get('fields').get('isShare') == True: print ('没有子设备') # 删除的需要传token值,id,---添加的设备是别人分享的情况可以用下面的删除方法 # Device_Info.objects.filter(id=id,userID_id=userID).delete() return response.json(0, '本设备已经成功删除') else: print ('有子设备需要一个一个的删除掉') user_equipment_all = Device_Info.objects.filter(UID=send_json.get('datas')[0].get('fields').get('UID')) send_jsons = CommonService.qs_to_dict(user_equipment_all) for k, v in enumerate(send_jsons["datas"]): print (v['pk']) # 删除的需要传token值,id,---添加的设备是别人分享的情况可以用下面的删除方法 # Device_Info.objects.filter(id=v['pk']).delete() return response.json(0, '多个已经成功删除') else: return response.json(0,'该用户没有该设备') return response.json(0) else: return response.json(444, 'id must list')