|
@@ -65,27 +65,10 @@ class testView(View):
|
|
|
|
|
|
def validation(self, request_dict, request, operation):
|
|
|
response = ResponseObject()
|
|
|
- if operation is None:
|
|
|
- return response.json(444, 'error path')
|
|
|
- elif operation == 'tests':
|
|
|
- logger = logging.getLogger('info')
|
|
|
- logger.info('测试打印')
|
|
|
- res = make_password(123456)
|
|
|
- return JsonResponse(status=200, data=res, safe=False)
|
|
|
- elif operation == 'cbu':
|
|
|
- return self.createBucket()
|
|
|
- elif operation == 'vodList':
|
|
|
- ip = CommonService.get_ip_address(request)
|
|
|
- return self.do_test_query_vod_list(ip, request_dict, response)
|
|
|
+ if operation == 'generateToken':
|
|
|
+ return self.generate_token(request_dict)
|
|
|
elif operation == 'signplaym3u8':
|
|
|
return self.do_sign_play_m3u8(request_dict, response)
|
|
|
- elif operation == 'get_sign_sts':
|
|
|
- ip = CommonService.get_ip_address(request)
|
|
|
- return self.do_test_get_sign_sts(request_dict, ip, response)
|
|
|
- elif operation == 'eqi_query':
|
|
|
- return self.queryInterface(request_dict, response)
|
|
|
- elif operation == 'generateToken':
|
|
|
- return self.generate_token(request_dict)
|
|
|
elif operation == 'analysisToken':
|
|
|
return self.analysis_token(request_dict, response)
|
|
|
elif operation == 'test_upload_s3':
|
|
@@ -139,7 +122,15 @@ class testView(View):
|
|
|
elif operation == 'find_device_serial': # 查找设备序列号接口:306低功耗无Wi-Fi产品
|
|
|
return self.find_device_serial(request_dict, response)
|
|
|
else:
|
|
|
- return 123
|
|
|
+ return response.json(414)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def generate_token(request_dict):
|
|
|
+ tko = TokenObject()
|
|
|
+ userID = request_dict.get('userID', None)
|
|
|
+ username = request_dict.get('username', None)
|
|
|
+ res = tko.generate(data={'userID': userID, 'lang': 'cn', 'user': username, 'm_code': username})
|
|
|
+ return JsonResponse(status=200, data=res, safe=False)
|
|
|
|
|
|
@classmethod
|
|
|
def serial_repetition_test_v2(cls, request_dict, response):
|
|
@@ -171,30 +162,6 @@ class testView(View):
|
|
|
logging.info('异常错误,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return response.json(178, e)
|
|
|
|
|
|
- @classmethod
|
|
|
- def serial_repetition_test(cls, request_dict, response):
|
|
|
- return response.json()
|
|
|
- # try:
|
|
|
- # serial_no = request_dict.get('serialNo', None)
|
|
|
- # if not serial_no:
|
|
|
- # return response.json(444)
|
|
|
- # with transaction.atomic():
|
|
|
- # first_serial = serial_no[:6]
|
|
|
- # first_serial_qs = TestSerialRepetition.objects.filter(serial_number__icontains=first_serial)
|
|
|
- # if first_serial_qs.exists():
|
|
|
- # return response.json(174)
|
|
|
- # serial_qs = TestSerialRepetition.objects.filter(serial_number=serial_no)
|
|
|
- # if not serial_qs.exists():
|
|
|
- # n_time = int(time.time())
|
|
|
- # params = {'serial_number': serial_no, 'created_time': n_time}
|
|
|
- # TestSerialRepetition.objects.create(**params)
|
|
|
- # return response.json(0)
|
|
|
- # else:
|
|
|
- # return response.json(174)
|
|
|
- # except Exception as e:
|
|
|
- # logging.info('异常错误,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
- # return response.json(178, e)
|
|
|
-
|
|
|
@classmethod
|
|
|
def generate_video(cls, request_dict, response):
|
|
|
# 设计抽取图片规则通过消息随机还是时间随机,调试copy S3对象查询是否携带失效时间
|
|
@@ -385,139 +352,6 @@ class testView(View):
|
|
|
# print(related_resources)
|
|
|
# return HttpResponse(sale)
|
|
|
|
|
|
- def createBucket(self):
|
|
|
-
|
|
|
- # 查看桶列表
|
|
|
- # url = "https://azvod1.s3-ap-northeast-1.amazonaws.com"
|
|
|
- # session = Session(ACCESS_KEY, SECRET_KEY)
|
|
|
- # s3_client = session.client('s3', endpoint_url=url)
|
|
|
- # results = s3_client.list_buckets()
|
|
|
- # return JsonResponse(status=200, data={'code': 200, 'msg': results['Buckets']})
|
|
|
-
|
|
|
- # Create bucket
|
|
|
- session = Session(ACCESS_KEY, SECRET_KEY)
|
|
|
- s3_client = session.client('s3')
|
|
|
-
|
|
|
- # 上传
|
|
|
- # s3_client.put_object(Bucket="azvod1", Key="file/rule.txt", Body=open(r"E:\download\Shadowsocks-4.1.10.0\user-rule.txt", 'rb').read())
|
|
|
-
|
|
|
- # 下载
|
|
|
- resp = s3_client.get_object(Bucket="azvod1", Key="file/rule.txt")
|
|
|
- with open('local.txt', 'wb') as f:
|
|
|
- f.write(resp['Body'].read())
|
|
|
-
|
|
|
- # 新查询设备字段
|
|
|
- def queryInterface(self, request_dict, response):
|
|
|
- page = request_dict.get('page', None)
|
|
|
- line = request_dict.get('line', None)
|
|
|
- NickName = request_dict.get('NickName', None)
|
|
|
- uid = request_dict.get('uid', None)
|
|
|
- page = int(page)
|
|
|
- line = int(line)
|
|
|
- response.lang = 'cn'
|
|
|
- userID = ''
|
|
|
- dvqs = Device_Info.objects.filter(userID_id=userID)
|
|
|
- # # 已重置的设备
|
|
|
- # dvqs = dvqs.filter(~Q(isExist=2))
|
|
|
- if NickName:
|
|
|
- dvqs = dvqs.filter(NickName__icontains=NickName)
|
|
|
- if uid:
|
|
|
- dvqs = dvqs.filter(UID=uid)
|
|
|
- # count = dvqs.count()
|
|
|
- # 分页
|
|
|
- dvql = dvqs[(page - 1) * line:page * line].values('id', 'userID', 'NickName', 'UID', 'View_Account',
|
|
|
- 'View_Password', 'ChannelIndex', 'Type', 'isShare',
|
|
|
- 'primaryUserID', 'primaryMaster', 'data_joined',
|
|
|
- 'version',
|
|
|
- 'isVod', 'isExist', 'NotificationMode')
|
|
|
- dvls = CommonService.qs_to_list(dvql)
|
|
|
- uid_list = []
|
|
|
- for dvl in dvls:
|
|
|
- uid_list.append(dvl['UID'])
|
|
|
- # if dvl['isShare'] is False:
|
|
|
- # uid_list.append(dvl['UID'])
|
|
|
- ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
|
|
|
- values('bucket__content', 'status', 'channel', 'endTime', 'uid')
|
|
|
- upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
|
|
|
- auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
|
|
|
- bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
|
|
|
- nowTime = int(time.time())
|
|
|
- data = []
|
|
|
- # 设备拓展信息表
|
|
|
- us_qs = UidSetModel.objects.filter(uid__in=uid_list). \
|
|
|
- values('uid', 'version', 'nickname', 'detect_interval')
|
|
|
- uv_dict = {}
|
|
|
- for us in us_qs:
|
|
|
- uv_dict[us['uid']] = {'version': us['version'],
|
|
|
- 'nickname': us['nickname'],
|
|
|
- 'detect_interval': us['detect_interval']}
|
|
|
- for p in dvls:
|
|
|
- p['vod'] = []
|
|
|
- for dm in ubqs:
|
|
|
- if p['UID'] == dm['uid']:
|
|
|
- if dm['endTime'] > nowTime:
|
|
|
- p['vod'].append(dm)
|
|
|
- p['preview'] = []
|
|
|
- for up in upqs:
|
|
|
- if p['UID'] == up['uid']:
|
|
|
- obj = 'uid_preview/{uid}/channel_{channel}.png'. \
|
|
|
- format(uid=up['uid'], channel=up['channel'])
|
|
|
- img_sign = bucket.sign_url('GET', obj, 300)
|
|
|
- p['preview'].append(img_sign)
|
|
|
- p_uid = p['UID']
|
|
|
- if p_uid in uv_dict:
|
|
|
- # 设备版本号
|
|
|
- p['uid_version'] = uv_dict[p_uid]['version']
|
|
|
- p['detect_interval'] = uv_dict[p_uid]['detect_interval']
|
|
|
- # 设备昵称 调用影子信息昵称,先阶段不可
|
|
|
- if uv_dict[p_uid]['nickname']:
|
|
|
- p['NickName'] = uv_dict[p_uid]['nickname']
|
|
|
- else:
|
|
|
- # 设备版本号
|
|
|
- p['uid_version'] = ''
|
|
|
- data.append(p)
|
|
|
- return response.json(0, data)
|
|
|
-
|
|
|
- # 获取播放列表
|
|
|
- def do_test_query_vod_list(self, ip, request_dict, response):
|
|
|
- uid = 'GZL2PEFJPLY7W6BG111A'
|
|
|
- channel = 2
|
|
|
- userID = '158943594633713800138000'
|
|
|
- dv_qs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False)
|
|
|
- if not dv_qs.exists():
|
|
|
- return response.json(12)
|
|
|
- vod_play_list = []
|
|
|
- bucket_name = 'azvod1'
|
|
|
- aws_access_key_id = 'AKIA2E67UIMD45Y3HL53'
|
|
|
- aws_secret_access_key = 'ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw'
|
|
|
- session = Session(
|
|
|
- aws_access_key_id=aws_access_key_id,
|
|
|
- aws_secret_access_key=aws_secret_access_key,
|
|
|
- region_name='ap-northeast-1'
|
|
|
- )
|
|
|
- conn = session.client('s3')
|
|
|
- thumbspng = '{uid}/vod{channel}/{time}/thumbs.png'. \
|
|
|
- format(uid=uid, channel=channel, time=1590485548)
|
|
|
- response_url = conn.generate_presigned_url(
|
|
|
- 'get_object',
|
|
|
- Params={
|
|
|
- 'Bucket': bucket_name,
|
|
|
- 'Key': thumbspng
|
|
|
- },
|
|
|
- ExpiresIn=3600
|
|
|
- )
|
|
|
- # m3u8 = '{uid}/vod{channel}/{time}/{time}.m3u8'. \
|
|
|
- # format(uid=uid, channel=channel, time=vod['time'])
|
|
|
- thumb_url = response_url
|
|
|
- vod_url = 'http://192.168.136.191:8000/testApi/signplaym3u8?' \
|
|
|
- 'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
|
|
|
- format(ip=ip, uid=uid, channel=channel, time=1590485548)
|
|
|
- vod_play_list.append({
|
|
|
- 'name': 1590485548,
|
|
|
- 'sign_url': vod_url,
|
|
|
- 'thumb': thumb_url,
|
|
|
- 'sec': 12})
|
|
|
- return response.json(0, vod_play_list)
|
|
|
|
|
|
# 生成m3u8列表
|
|
|
def do_sign_play_m3u8(self, request_dict, response):
|
|
@@ -677,14 +511,6 @@ class testView(View):
|
|
|
{'name': vod['start_time'], 'sign_url': vod_play_url, 'thumb': thumb, 'sec': vod['sec']})
|
|
|
return response.json(0, vod_play_list)
|
|
|
|
|
|
- @staticmethod
|
|
|
- def generate_token(request_dict):
|
|
|
- tko = TokenObject()
|
|
|
- userID = request_dict.get('userID', None)
|
|
|
- username = request_dict.get('username', None)
|
|
|
- res = tko.generate(data={'userID': userID, 'lang': 'cn', 'user': username, 'm_code': username})
|
|
|
- return JsonResponse(status=200, data=res, safe=False)
|
|
|
-
|
|
|
@staticmethod
|
|
|
def analysis_token(request_dict, response):
|
|
|
token = request_dict.get('token', None)
|
|
@@ -894,78 +720,68 @@ class testView(View):
|
|
|
serial_number = request_dict.get('serialNumber', None)
|
|
|
if not serial_number:
|
|
|
return response.json(444)
|
|
|
+ serialNumber = serial_number[:9]
|
|
|
+ serial_number = serial_number[:6]
|
|
|
try:
|
|
|
uid_user_message = {
|
|
|
"uid": "",
|
|
|
"serialNumber": "",
|
|
|
"userID": "",
|
|
|
"username": "",
|
|
|
- "primaryUserID": "",
|
|
|
+ "primaryUserID": ""
|
|
|
}
|
|
|
data = {
|
|
|
"uid": "",
|
|
|
- "serialNumber": serial_number[:9],
|
|
|
+ "serialNumber": serialNumber,
|
|
|
"status": "",
|
|
|
- "add_time": "",
|
|
|
"uid_user_message": uid_user_message
|
|
|
}
|
|
|
- # 获取序列哈状态
|
|
|
- company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number[:6]).values('status')
|
|
|
+ company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number).values('status')
|
|
|
if not company_serial_qs.exists():
|
|
|
return response.json(173)
|
|
|
- company_serial_qs = company_serial_qs.first()
|
|
|
- if company_serial_qs['status'] == 0:
|
|
|
+ if company_serial_qs[0]['status'] == 0:
|
|
|
return response.json(0, {'contents': '序列号未分配'})
|
|
|
uid_company_serial_qs = UIDCompanySerialModel.objects.filter(
|
|
|
- company_serial__serial_number=serial_number[:6]).values('uid__uid', 'uid__status',
|
|
|
- 'company_serial__serial_number', 'add_time')
|
|
|
- if not uid_company_serial_qs.exists():
|
|
|
- data['status'] = cls.serial_number_status(company_serial_qs['status'])
|
|
|
+ company_serial__serial_number=serial_number).values('uid__uid', 'uid__status',
|
|
|
+ 'company_serial__serial_number')
|
|
|
+ if not uid_company_serial_qs.exists() and company_serial_qs[0]['status'] != 0:
|
|
|
+ if company_serial_qs[0]['status'] == 1:
|
|
|
+ data['status'] = '已分配'
|
|
|
+ if company_serial_qs[0]['status'] == 2:
|
|
|
+ data['status'] = '绑定uid'
|
|
|
+ if company_serial_qs[0]['status'] == 3:
|
|
|
+ data['status'] = '已占用'
|
|
|
return response.json(0, data)
|
|
|
- uid_company_serial = uid_company_serial_qs.first()
|
|
|
- data['uid'] = uid_company_serial['uid__uid']
|
|
|
- data['status'] = uid_company_serial['uid__status']
|
|
|
- data['add_time'] = CommonService.timestamp_to_str(uid_company_serial['add_time'])
|
|
|
- data['status'] = cls.serial_number_status(company_serial_qs['status'])
|
|
|
- device_info_qs = Device_Info.objects.filter(UID=data['uid']).values(
|
|
|
- 'UID',
|
|
|
- 'serial_number',
|
|
|
- 'userID_id',
|
|
|
- 'primaryUserID',
|
|
|
- 'userID__username',
|
|
|
- 'data_joined').order_by('-data_joined')
|
|
|
- if device_info_qs.exists():
|
|
|
- # 判断主用户是否存在
|
|
|
- primary_qs = device_info_qs.exclude(primaryUserID='')
|
|
|
- if primary_qs.exists():
|
|
|
- uid_user_message['uid'] = primary_qs[0]['UID'],
|
|
|
- uid_user_message['serialNumber'] = primary_qs[0]['serial_number']
|
|
|
- uid_user_message['userID'] = primary_qs[0]['userID_id']
|
|
|
- uid_user_message['username'] = primary_qs[0]['userID__username']
|
|
|
- uid_user_message['primaryUserID'] = primary_qs[0]['primaryUserID']
|
|
|
- else:
|
|
|
- device_info = device_info_qs.first()
|
|
|
- uid_user_message['uid'] = device_info['UID']
|
|
|
- uid_user_message['serialNumber'] = device_info['serial_number']
|
|
|
- uid_user_message['userID'] = device_info['userID_id']
|
|
|
- uid_user_message['username'] = device_info['userID__username']
|
|
|
- uid_user_message['primaryUserID'] = device_info['primaryUserID']
|
|
|
+ for uid_company_serial in uid_company_serial_qs:
|
|
|
+ data['uid'] = uid_company_serial['uid__uid']
|
|
|
+ data['serialNumber'] = serialNumber
|
|
|
+ data['status'] = uid_company_serial['uid__status']
|
|
|
+ if company_serial_qs[0]['status'] == 1:
|
|
|
+ data['status'] = '已分配'
|
|
|
+ if company_serial_qs[0]['status'] == 2:
|
|
|
+ data['status'] = '绑定uid'
|
|
|
+ if company_serial_qs[0]['status'] == 3:
|
|
|
+ data['status'] = '已占用'
|
|
|
+ uid = uid_company_serial['uid__uid'] if uid_company_serial['uid__uid'] else ''
|
|
|
+ device_info_qs = Device_Info.objects.filter(UID=uid).values(
|
|
|
+ 'UID',
|
|
|
+ 'serial_number',
|
|
|
+ 'userID_id',
|
|
|
+ 'primaryUserID',
|
|
|
+ 'userID__username')
|
|
|
+ uid_user_message = {
|
|
|
+ 'uid': device_info_qs[0]['UID'] if device_info_qs.exists() else '',
|
|
|
+ 'serialNumber': device_info_qs[0]['serial_number'] if device_info_qs.exists() else '',
|
|
|
+ 'userID': device_info_qs[0]['userID_id'] if device_info_qs.exists() else '',
|
|
|
+ 'username': device_info_qs[0]['userID__username'] if device_info_qs.exists() else '',
|
|
|
+ 'primaryUserID': device_info_qs[0]['primaryUserID'] if device_info_qs.exists() else ''
|
|
|
+ }
|
|
|
+ data['uid_user_message'] = uid_user_message
|
|
|
return response.json(0, data)
|
|
|
except Exception as e:
|
|
|
- logger.error('序列号:{}, 查询异常:{}'.format(serial_number, e))
|
|
|
+ logger.info('查询异常:{}'.format(e))
|
|
|
return response.json(500)
|
|
|
|
|
|
- @staticmethod
|
|
|
- def serial_number_status(status):
|
|
|
- # 判断序号状态
|
|
|
- if status == 1:
|
|
|
- status = '已分配'
|
|
|
- elif status == 2:
|
|
|
- status = '绑定uid'
|
|
|
- elif status == 3:
|
|
|
- status = '已占用'
|
|
|
- return status
|
|
|
-
|
|
|
@classmethod
|
|
|
def get_serial_details(cls, request_dict, response, request):
|
|
|
"""
|
|
@@ -976,7 +792,7 @@ class testView(View):
|
|
|
if not serial_number:
|
|
|
return response.json(0)
|
|
|
results_data = []
|
|
|
- if CONFIG_INFO != 'cn':
|
|
|
+ if not CONFIG_INFO == 'cn':
|
|
|
return response.json(0, results_data)
|
|
|
local_response = cls.getSerialNumberInfo(request_dict, response)
|
|
|
res = json.loads(local_response.content)
|
|
@@ -1070,3 +886,9 @@ class testView(View):
|
|
|
except Exception as e:
|
|
|
LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return response.json(178, e)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def password(request_dict, response):
|
|
|
+ password = request_dict.get('password', None)
|
|
|
+ password = make_password(password)
|
|
|
+ return response.json(0)
|