Exemplo n.º 1
0
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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
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])
Exemplo n.º 8
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)
Exemplo n.º 9
0
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])
Exemplo n.º 10
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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])
Exemplo n.º 13
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])
Exemplo n.º 14
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)
Exemplo n.º 15
0
 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)