def detail(request): """ 获取详情 """ queryParams = request.query_params try: news_id = int(queryParams.get('news_id')) if news_id == None: return RestResponse(data=None, message="news_id is required", errCode=1) try: news = News.objects.get(id=int(news_id)) serializer = NewsSerializer(news, many=False) return RestResponse(data=serializer.data, message="获取记录成功") except News.DoesNotExist: return RestResponse(data=None, message="记录不存在", detail="news_id does not exsit", errCode=10) except: return RestResponse(data=None, message="参数类型错误", detail="param can not parse to int", errCode=2)
def get(self, request, *args, **kwargs): data = request.query_params is_delete = data.get('is_delete') after_time = data.get('after_time') device_type = data.get('device_type') if is_delete != None: self.queryset = self.queryset.filter(is_delete = is_delete) if device_type != None: self.queryset = self.queryset.filter(device_type = device_type) if after_time != None: try: self.queryset = self.queryset.filter(update_time__lte = after_time) except Exception as e: return RestResponse(data=data,status=ResponseStatus.PARAMS_ERROR,detail=str(e)) queryset = self.filter_queryset(self.get_queryset()) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) user_ids = None for device in queryset: if user_ids == None: user_ids = device.user_id else: user_ids = user_ids + "," + device.user_id return RestResponse(data=user_ids,status=ResponseStatus.OK)
def post(self, request, *args, **kwargs): data = request.data device_token = data.get('device_token') try: device = Device.objects.get(device_token=device_token) device.is_delete = True device.save() return RestResponse(data=data, status=ResponseStatus.OK) except Device.DoesNotExist: return RestResponse(data=data, status=ResponseStatus.OBJECT_NOT_EXSIT)
def get(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) response = self.get_paginated_response(serializer.data) return RestResponse(data=response.data, status=ResponseStatus.OK) serializer = self.get_serializer(queryset, many=True) return RestResponse(data=serializer.data, status=ResponseStatus.OK)
def get(self, request, *args, **kwargs): data = request.query_params course_id = data.get('course_id') if course_id == None: return RestResponse(data=None, status=ResponseStatus.PARAMS_ERROR, detail='argument[course_id] is required') else: self.queryset = Course.objects.get(id=course_id) serializer = self.get_serializer(self.queryset) return RestResponse(data=serializer.data, status=ResponseStatus.OK)
def post(self, request, *args, **kwargs): data = request.data hook_name = data.get('hook_name') password = data.get('password') if hook_name != "push_hooks": return RestResponse(data=None, status=ResponseStatus.UNSUPPORT_ACTION) if password != self.password: return RestResponse(data=None, status=ResponseStatus.PARAMS_ERROR) current_path = os.path.dirname(os.path.realpath(__file__)) cmd = "sh " + current_path + "/git_pull.sh " + self.project_path os.system(cmd) return RestResponse(data=None, status=ResponseStatus.OK)
def live(request): """ 打开直播间页面 """ stream = request.read() data = QueryDict(stream, encoding='utf-8') room_id = data.get('room_id') eng_name = data.get('eng_name') alert = data.get('alert') if room_id == None: return RestResponse(data=None, message="room_id is required", errCode=ERR_MISS_PARAMS) if eng_name == None: return RestResponse(data=None, message="eng_name is required", errCode=ERR_MISS_PARAMS) if alert == None: return RestResponse(data=None, message="alert is required", errCode=ERR_MISS_PARAMS) devices = Device.objects.all() custom_data = { "action": 2, "data": { "room_id": room_id, "eng_name": eng_name } } device_list = [] for device in devices: device_list.append(device.device_token) result = xgpush.push_message_to_multiple(device_token_list=device_list, message=alert, custom_data=custom_data) if result[0] == OK: return RestResponse(data=data, message="发送推送数据成功") else: return RestResponse(data=data, message="发送推送测试数据失败", detail=result[1], errCode=result[0])
def post(self, request, *args, **kwargs): data = request.data device_token = data.get('device_token') serializer = None try: device = Device.objects.get(device_token=device_token) serializer = self.get_serializer(device,data=data) except Device.DoesNotExist: serializer = self.get_serializer(data=data) if serializer.is_valid(): serializer.save() # xgpush.setTag(serializer.instance.user_id,serializer.instance.device_token,serializer.instance.device_type) return RestResponse(data=data,status=ResponseStatus.OK) else: return RestResponse(data=data,status=ResponseStatus.SERIALIZER_ERROR,detail=serializer.errors)
def message_to_all(request): """ 推送消息到所有设备 """ stream = request.read() data = QueryDict(stream, encoding='utf-8') alert = data.get('alert') custom_data = data.get('custom_data') if alert == None: return RestResponse(data=None, message="参数缺失", detail="alert is required", errCode=ERR_MISS_PARAMS) if custom_data != None: try: custom_data = json.loads(custom_data) except: return RestResponse(data=None, message="参数类型错误", detail="custom_data can not be parse json", errCode=ERR_PARSE_JSON_FAILED) devices = Device.objects.all() if len(devices) == 0: return RestResponse(data=None, message="没有绑定设备", errCode=ERR_DEVICE_EMPTY) else: device_list = [] for device in devices: device_list.append(device.device_token) result = xgpush.push_message_to_multiple(device_token_list=device_list, message=alert, custom_data=custom_data) if result[0] == OK: return RestResponse(data=data, message="发送推送数据成功") else: return RestResponse(data=data, message="发送推送测试数据失败", detail=result[1], errCode=result[0])
def post(self, request, *args, **kwargs): data = request.data serializer = self.get_serializer(data=data) if serializer.is_valid(): try: serializer_data = serializer.data # device_list = get_device_list(serializer.user_ids) # result = xgpush.push_message_to_multiple(device_token_list = device_list, message = serializer.alert, custom_data = serializer.custom_data) tags = get_tags(serializer.user_ids) result = xgpush.push_message_to_tags(tags,message=serializer.alert, custom_data=serializer.custom_data, send_time=serializer.send_time) if result[0] == OK: return RestResponse(data=data, status=ResponseStatus.OK) else: return RestResponse(data=data, status=ResponseStatus.PUSH_FAILED, detail=result[1]) except Exception as e: return RestResponse(data=data,status=ResponseStatus.SERIALIZER_ERROR,detail=str(e)) else: return RestResponse(data=data,status=ResponseStatus.SERIALIZER_ERROR,detail=serializer.errors)
def list(request): """ 获取列表 TODO: 参数检测,可否被转成Int """ queryParams = request.query_params offset = queryParams.get('offset') try: news_id = int(queryParams.get('news_id')) if offset != None: offset = int(queryParams.get('offset')) else: offset = 20 if news_id == None: return RestResponse(data=None, message="news_id is required", errCode=1) news_list = [] if news_id == 0: news_list = News.objects.all().order_by('-id')[0:offset] else: news_list = News.objects.filter( id__lte=news_id).order_by('-id')[0:offset] for news in news_list: news.content = news.content[0:100] serializer = NewsSerializer(news_list, many=True) return RestResponse(data=serializer.data, message="获取列表数据成功") except: return RestResponse(data=None, message="参数类型错误", detail="param can not parse to int", errCode=2)
def message_to_multiple(request): stream = request.read() data = QueryDict(stream, encoding='utf-8') device_token_list = data.get('device_token_list') alert = data.get('alert') custom_data = data.get('custom_data') if device_token_list == None: return RestResponse(data=None, message="参数缺失", detail="device_token_list is required", errCode=ERR_MISS_PARAMS) if alert == None: return RestResponse(data=None, message="参数缺失", detail="alert is required", errCode=ERR_MISS_PARAMS) if custom_data != None: try: custom_data = json.loads(custom_data) except: return RestResponse(data=None, message="参数类型错误", detail="custom_data can not be parse json", errCode=ERR_PARSE_JSON_FAILED) device_token_list = json.loads(device_token_list) result = xgpush.push_message_to_multiple( device_token_list=device_token_list, message=alert, custom_data=custom_data) if result[0] == OK: return RestResponse(data=data, message="发送推送数据成功") else: return RestResponse(data=data, message="发送推送测试数据失败", detail=result[1], errCode=result[0])
def web(request): """ 通知打开web页面 """ stream = request.read() data = QueryDict(stream, encoding='utf-8') url = data.get('url') alert = data.get('alert') if url == None: return RestResponse(data=None, message="url is required", errCode=ERR_MISS_PARAMS) if alert == None: return RestResponse(data=None, message="alert is required", errCode=ERR_MISS_PARAMS) devices = Device.objects.all() custom_data = {"action": 1, "data": {"url": url}} device_list = [] for device in devices: device_list.append(device.device_token) result = xgpush.push_message_to_multiple(device_token_list=device_list, message=alert, custom_data=custom_data) if result[0] == OK: return RestResponse(data=data, message="发送推送数据成功") else: return RestResponse(data=data, message="发送推送测试数据失败", detail=result[1], errCode=result[0])
def message_to_one(request): """ 推送消息到单个设备 """ stream = request.read() data = QueryDict(stream, encoding='utf-8') device_token = data.get('device_token') alert = data.get('alert') custom_data = data.get('custom_data') if device_token == None: return RestResponse(data=None, message="参数缺失", detail="device_token is required", errCode=ERR_MISS_PARAMS) if alert == None: return RestResponse(data=None, message="参数缺失", detail="alert is required", errCode=ERR_MISS_PARAMS) if custom_data != None: try: custom_data = json.loads(custom_data) except: return RestResponse(data=None, message="参数类型错误", detail="custom_data can not be parse json", errCode=ERR_PARSE_JSON_FAILED) try: device = Device.objects.get(device_token=device_token) result = (0, '') if device.is_ios(): result = xgpush.push_ios_message(device_token=device_token, message=alert, custom_data=custom_data) if device.is_android(): result = xgpush.push_android_message(device_token=device_token, title='1234TV', message=alert, custom_data=custom_data) if result[0] == 0: return RestResponse(data=data, message="发送推送数据成功") else: return RestResponse(data=data, message="发送推送测试数据失败", detail=result[1], errCode=result[0]) except Device.DoesNotExist: return RestResponse(data=None, message="不存在该设备", detail="device is not exist", errCode=ERR_DEVICE_NOT_EXSIT)
def get(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) serializer = self.get_serializer(queryset, many=True) return RestResponse(data=serializer.data, status=ResponseStatus.OK)