from django.views.decorators.csrf import csrf_exempt import traceback from Service.ModelService import ModelService from Model.models import Device_User, Device_Info, Device_Meal, UID_Bucket from Service.CommonService import CommonService import simplejson as json from Object.TokenObject import TokenObject from Object.ResponseObject import ResponseObject import re # 查询用户设备 @csrf_exempt def queryUserEquipmentInterface(request): request.encoding = 'utf-8' response = ResponseObject() if request.method == 'POST': request_dict = request.POST elif request.method == 'GET': request_dict = request.GET else: return response.json(444) 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 if not userID: return response.json(309) dvqs = Device_Info.objects.filter(userID_id=userID) dvdict = CommonService.qs_to_dict(dvqs) uid_list = Device_Info.objects.filter(userID_id=userID, isShare=False). \ values_list('UID', flat=True) ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \ values('bucket__content', 'status', 'channel', 'endTime', 'uid') res = [] for p in dvdict['datas']: p['fields']['vod'] = [] for dm in ubqs: if p['fields']['UID'] == dm['uid']: p['fields']['vod'].append(dm) # p['fields']['primaryUserID'] = '' res.append(p) return response.json(0, {'datas': res}) @csrf_exempt def addNewUserEquipmentInterface(request): request.encoding = 'utf-8' response = ResponseObject() if request.method == 'POST': request_dict = request.POST elif request.method == 'GET': request_dict = request.GET else: return response.json(444) token = request_dict.get('token', None) deviceContent = request_dict.get('content', None) if not deviceContent: return response.json(444, 'content') tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID try: deviceData = json.loads(deviceContent) UID = deviceData.get('UID', None) if not UID: return response.json(444, 'content') dValid = Device_Info.objects.filter(userID=userID, UID=UID) if dValid: return response.json(174) else: UID = deviceData.get('UID', '') re_uid = re.compile(r'^[A-Za-z0-9]{20}$') if re_uid.match(UID): userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID, **deviceData) userDevice.save() # is_bind = Device_Info.objects.filter(UID=UID, isShare=False) # # 判断是否有已绑定用户 # if not is_bind.exists(): # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID, # **deviceData) # userDevice.save() # else: # # 分享添加 # if 'isShare' in deviceData: # deviceData['isShare'] = True # else: # deviceData['isShare'] = True # bind_userID = is_bind[0].userID_id # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), # userID_id=userID, # primaryUserID=bind_userID, # primaryMaster=ModelService.get_user_name(bind_userID), # **deviceData) # userDevice.save() else: return response.json(444, 'UID') except Exception as e: errorInfo = traceback.format_exc() print('添加设备错误: %s ' % errorInfo) return response.json(178, repr(e)) else: sqlDict = CommonService.qs_to_dict([userDevice]) return response.json(0, sqlDict) @csrf_exempt def addInterface(request): request.encoding = 'utf-8' response = ResponseObject() if request.method == 'POST': request_dict = request.POST elif request.method == 'GET': request_dict = request.GET else: return response.json(444) token = request_dict.get('token', None) deviceContent = request_dict.get('content', None) if not deviceContent: return response.json(444, 'content') tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID try: deviceData = json.loads(deviceContent) UID = deviceData.get('UID', None) if not UID: return response.json(444, 'content') dValid = Device_Info.objects.filter(userID=userID, UID=UID) if dValid: return response.json(174) else: UID = deviceData.get('UID', '') re_uid = re.compile(r'^[A-Za-z0-9]{20}$') if re_uid.match(UID): is_bind = Device_Info.objects.filter(UID=UID, isShare=False) # 判断是否有已绑定用户 if not is_bind.exists(): userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID, **deviceData) userDevice.save() else: return response.json() else: return response.json(444, 'UID') except Exception as e: errorInfo = traceback.format_exc() print('添加设备错误: %s ' % errorInfo) return response.json(178, repr(e)) else: sqlDict = CommonService.qs_to_dict([userDevice]) return response.json(0, sqlDict) @csrf_exempt def delUserEquipmentInterface(request): ''' 删除用户设备 :param request: :return: ''' response = ResponseObject() request.encoding = 'utf-8' if request.method == 'POST': request_dict = request.POST elif request.method == 'GET': request_dict = request.GET else: return response.json(444) token = request_dict.get('token', None) id = request_dict.get('id', None) if not id: return response.json(444, 'id') tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID # 主用户删除设备全部删除 try: Device_Info.objects.filter(userID_id=userID, id=id).delete() except Exception as e: errorInfo = traceback.format_exc() print('删除数据库记录错误: %s' % errorInfo) return response.json(176, repr(e)) else: return response.json(0) @csrf_exempt def deleteInterface(request): ''' 删除用户设备 :param request: :return: ''' response = ResponseObject() request.encoding = 'utf-8' if request.method == 'POST': request_dict = request.POST elif request.method == 'GET': request_dict = request.GET else: return response.json(444) token = request_dict.get('token', None) id = request_dict.get('id', None) if not id: return response.json(444, 'id') tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID # 主用户删除设备全部删除 try: dv_qs = Device_Info.objects.filter(userID_id=userID, id=id) uid = dv_qs[0].UID if dv_qs[0].isShare: dv_qs.delete() else: # 主用户删除设备 dv_qs.delete() # 分享获得用户假删除 ud_dv_qs = Device_Info.objects.filter(UID=uid) if ud_dv_qs.exists(): ud_dv_qs.update(isExist=0) except Exception as e: errorInfo = traceback.format_exc() print('删除数据库记录错误: %s' % errorInfo) return response.json(176, repr(e)) else: return response.json(0) @csrf_exempt def modifyUserEquipmentInterface(request): ''' 修改用户设备 :param request: :return: ''' response = ResponseObject() if request.method == 'POST': request.encoding = 'utf-8' request_dict = request.POST elif request.method == 'GET': request.encoding = 'utf-8' request_dict = request.GET else: return response.json(444) token = request_dict.get('token', None) deviceContent = request_dict.get('content', None) id = request_dict.get('id', None) if not deviceContent or not id: return response.json(444, 'content,id') tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID if userID is None: return response.json(309) try: deviceData = json.loads(deviceContent) Device_Info.objects.filter(userID_id=userID, id=id).update(**deviceData) except Exception as e: return response.json(177, repr(e)) else: qs = Device_Info.objects.filter(userID_id=userID, id=id) res = CommonService.qs_to_dict(qs) return response.json(0, res) @csrf_exempt def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs): request.encoding = 'utf-8' response = ResponseObject() if request.method == 'POST': fieldDict = request.POST elif request.method == 'GET': fieldDict = request.GET else: return response.json(444) token = request.POST.get('token', None) type = request.POST.get('type', None) tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) userID = tko.userID if not userID: return response.json(104) own_perm = ModelService.check_perm(userID=userID, permID=30) if not own_perm: return response.json(404) if type == 'PC': page = int(fieldDict['page']) line = int(fieldDict['line']) qs = Device_Info.objects.all() count = qs.count() res = qs[(page - 1) * line:page * line] sqlDict = CommonService.qs_to_dict(query_set=res) sqlDict['count'] = count return response.json(0, sqlDict) else: qs = Device_Info.objects.all() res = CommonService.qs_to_dict(qs) return response.json(0, res) @csrf_exempt def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs): request.encoding = 'utf-8' response = ResponseObject() if request.method == 'GET': fieldDict = request.GET elif request.method == 'POST': fieldDict = request.POST else: return response.json(444) deviceContent = fieldDict.get('content', None) token = fieldDict.get('token', None) tko = TokenObject(token) response.lang = tko.lang if tko.code != 0: return response.json(tko.code) if deviceContent: try: searchCondition = json.loads(deviceContent) except Exception as e: print(repr(e)) return response.json(10, repr(e)) else: kwargs = CommonService.get_kwargs(data=searchCondition) qs = Device_Info.objects.filter(**kwargs) page = int(fieldDict['page']) line = int(fieldDict['line']) count = qs.count() res = qs[(page - 1) * line:page * line] send_dict = CommonService.qs_to_dict(query_set=res) for k, v in enumerate(send_dict["datas"]): for val in res: if v['pk'] == val.id: username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID']) send_dict["datas"][k]['fields']['username'] = username primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID']) send_dict["datas"][k]['fields']['primaryusername'] = primary send_dict['count'] = count return response.json(0, send_dict) else: qs = Device_Info.objects.all() page = int(fieldDict['page']) line = int(fieldDict['line']) count = qs.count() res = qs[(page - 1) * line:page * line] send_dict = CommonService.qs_to_dict(query_set=res) for k, v in enumerate(send_dict["datas"]): for val in res: if v['pk'] == val.id: username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID']) send_dict["datas"][k]['fields']['username'] = username primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID']) send_dict["datas"][k]['fields']['primaryusername'] = primary send_dict['count'] = count return response.json(0, send_dict)