123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import json
- import time
- from aioredis.commands import transaction
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- from django.views.generic.base import View
- from Service.ModelService import ModelService
- from Service.CommonService import CommonService
- from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
- VodHlsModel, ExperienceContextModel
- import datetime
- from django.utils import timezone
- class DeviceManagement(View):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.GET, request, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.POST, request, operation)
- def validation(self, request_dict, request, operation):
- language = request_dict.get('language', 'en')
- response = ResponseObject(language, 'pc')
- tko = TokenObject(
- request.META.get('HTTP_AUTHORIZATION'),
- returntpye='pc')
- if tko.code != 0:
- return response.json(tko.code)
- response.lang = tko.lang
- userID = tko.userID
- if userID is not None:
- if operation == 'query':
- return self.query(request_dict, userID, response)
- elif operation == 'findByUser':
- return self.findByUser(request_dict, userID, response)
- elif operation == 'delete':
- return self.delete(request_dict, userID, response)
- elif operation == 'uidSetQuery':
- return self.uidSetQuery(request_dict, userID, response)
- elif operation == 'vod_reset':
- return self.vod_reset(request, request_dict, response)
- elif operation == 'primary_user_reset':
- return self.primary_user_reset(request, request_dict, response)
- return response.json(444, 'operation')
- def query(self, request_dict, userID, response):
- own_perm = ModelService.check_perm(userID=userID, permID=30)
- if not own_perm :
- return response.json(404)
- pageNo = request_dict.get('pageNo', None)
- pageSize = request_dict.get('pageSize', None)
- UID = request_dict.get('UID', None)
- if not all([pageNo, pageSize]):
- return response.json(444)
- page = int(pageNo)
- line = int(pageSize)
- queryset = Device_Info.objects.all()
- if UID:
- queryset = queryset.filter(UID__contains=UID)
- if queryset.exists():
- count = queryset.count()
- res = queryset[(page - 1) * line:page * line]
- send_dict = CommonService.qs_to_dict(res)
- for k, v in enumerate(send_dict["datas"]):
- for val in res:
- if v['pk'] == val.id:
- if send_dict["datas"][k]['fields']['Online'] is True:
- dl_time = val.update_time+datetime.timedelta(minutes=60)
- now_time = timezone.localtime(timezone.now())
- if now_time > dl_time:
- pass
- # send_dict["datas"][k]['fields']['Online'] = False
- 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
- return response.json(
- 0, {'list': send_dict, 'total': count})
- return response.json(
- 0, {'list': {}, 'total': 0})
- # 管理员查询接口
- def uidSetQuery(self, request_dict, userID, response):
- pageNo = request_dict.get('pageNo', None)
- pageSize = request_dict.get('pageSize', None)
- UID = request_dict.get('UID', None)
- if not all([pageNo, pageSize]):
- return response.json(444)
- page = int(pageNo)
- line = int(pageSize)
- omqs = UidSetModel.objects.all().order_by('-id')
- if UID:
- omqs = omqs.filter(uid__contains=UID)
- count = omqs.count()
- order_ql = omqs[(page - 1) * line:page * line]
- uidset_json = CommonService.qs_to_dict(order_ql)
- uidset_json['count'] = count
- return response.json(
- 0, {'list': uidset_json, 'total': count})
- # 重置设备云存
- def vod_reset(self, request, request_dict, response):
- uid = request_dict.get('uid', None)
- if uid:
- try:
- # 记录操作日志
- ip = CommonService.get_ip_address(request)
- content = json.loads(json.dumps(request_dict))
- log = {
- 'ip': ip,
- 'user_id': 1,
- 'status': 200,
- 'time': int(datetime.time.time()),
- 'url': 'uidset/vod_reset',
- 'content': json.dumps(content),
- 'operation': '{}重置设备云存'.format(uid),
- }
- with transaction.atomic():
- LogModel.objects.create(**log)
- # 删除和更新设备云存相关数据
- UID_Bucket.objects.filter(uid=uid).delete()
- Unused_Uid_Meal.objects.filter(uid=uid).delete()
- Order_Model.objects.filter(UID=uid).delete()
- StsCrdModel.objects.filter(uid=uid).delete()
- VodHlsModel.objects.filter(uid=uid).delete()
- ExperienceContextModel.objects.filter(uid=uid).delete()
- # UIDMainUser.objects.filter(UID=uid).delete()
- Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
- else:
- return response.json(0)
- # 重置设备主用户
- def primary_user_reset(self, request, request_dict, response):
- uid = request_dict.get('uid', None)
- if not uid:
- return response.json(404)
- try:
- # 记录操作日志
- ip = CommonService.get_ip_address(request)
- content = json.loads(json.dumps(request_dict))
- log = {
- 'ip': ip,
- 'user_id': 1,
- 'status': 200,
- 'time': int(time.time()),
- 'url': 'uidset/primary_user_reset',
- 'content': json.dumps(content),
- 'operation': '{}重置设备主用户'.format(uid),
- }
- LogModel.objects.create(**log)
- Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
- return response.json(0)
- except Exception as e:
- return response.json(500, repr(e))
|