| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | #!/usr/bin/env python3# -*- coding: utf-8 -*-import jsonimport timefrom django.db import transactionfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom django.views.generic.base import Viewfrom Service.ModelService import ModelServicefrom Service.CommonService import CommonServicefrom Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \    VodHlsModel, ExperienceContextModelimport datetimefrom django.utils import timezoneclass 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))
 |