Exemple #1
0
 def testJudgeIntValidBoundary(self):
     data = 65536
     result = judgeIntValid(data)
     self.assertEqual(result, False)
     data = -1001
     result = judgeIntValid(data)
     self.assertEqual(result, False)
Exemple #2
0
 def testJudgeIntValidBoundary(self):
     data = 65535
     result = judgeIntValid(data)
     self.assertEqual(result, True)
     data = -1000
     result = judgeIntValid(data)
     self.assertEqual(result, True)
def handleQueryTasksOrTimers():
    """handle request to retrieve lists of tasks or timers"""
    taskId = request.args.get('taskId', None)
    timerId = request.args.get('timerId', None)
    userId = request.args.get('userId', None) # for verification
    # judge input
    if not judgeInputValid({"userId": userId}) or \
            (taskId and not judgeIntValid(taskId)) or \
            (timerId and not judgeIntValid(timerId)):
        code, msg = 400, apiStatus.getResponseMsg(400)
        return jsonify({"code": code, "message": msg, "data": None})

    if (taskId and timerId) or not userId:
        code, msg = 500, apiStatus.getResponseMsg(500)
        return jsonify({"code": code, "message": msg, "data":[]})

    code, msg, resultData = 0, "", []
    result = {}
    if not timerId and not taskId and userId:
        # retrieve by user
        result['data'] = []  # should also return an empty list
        targetRels = TaskToTimer.query.filter_by(userId=userId).all()
        if not targetRels:
            code, msg = 404, apiStatus.getResponseMsg(404)
        else:
            for rel in targetRels:
                result['data'].append(rel.toDict())
            code, msg = 200, apiStatus.getResponseMsg(200)

    elif timerId:
        targetTimer = Timer.query.get(timerId)
        if not targetTimer:
            code, msg = 404, apiStatus.getResponseMsg(404)
        # elif targetTimer.userId != userId:
        #     code, msg = 401, apiStatus.getResponseMsg(401)
        else:
            code, msg, resultData = getTasksByTimerid(int(timerId))
    elif taskId:
        targetTask = Task.query.get(taskId)
        if not targetTask:
            code, msg = 404, apiStatus.getResponseMsg(404)
        elif targetTask.userId !=userId:
            code, msg = 401, apiStatus.getResponseMsg(401)
        else:
            code, msg, resultData = getTimersByTaskid(int(taskId))

    result["code"] = code
    result["message"] = msg
    result["data"] = resultData
    return jsonify(result)
def putTaskList(taskListId):
    """API for updating a task list with id as taskListId from request body"""
    data = request.get_json(force=True)
    postAttrs = ['userId', 'name']
    code, msg, result = 0, '', {"data": None}
    if not judgeIntValid(taskListId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)

    if not judgeInputValid(data):
        code, msg = 400, apiStatus.getResponseMsg(400)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)

    if not judgeKeysCorrect(data, postAttrs):
        code, msg = 400, apiStatus.getResponseMsg(400)
    else:
        targetTaskList = TaskList.query.get(taskListId)
        if not targetTaskList:
            code, msg = 404, apiStatus.getResponseMsg(404)
        else:
            try:
                targetTaskList.update(data)
                db.session.commit()
                result["data"] = targetTaskList.toDict()
                code, msg = 201, apiStatus.getResponseMsg(201)
            except:
                code, msg = 500, apiStatus.getResponseMsg(500)
    result["code"] = code
    result["message"] = msg
    return jsonify(result)
def handleTaskTimer(taskTimerId):
    """This function is used to handle GET / DELETE requests for handle task timer"""

    if not judgeIntValid(taskTimerId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        return jsonify({"code": code, "message": msg, "data": None})

    getCode, getMsg, targetTaskTimer = getTaskTimer(int(taskTimerId))
    result = {"code": getCode, "message": getMsg, "data": None}

    if request.method == "GET":
        if targetTaskTimer:
            result["data"] = targetTaskTimer.toDict()
    elif request.method == "DELETE":
        if not targetTaskTimer:
            return jsonify(result)
        try:
            db.session.delete(targetTaskTimer)
            db.session.commit()
            code, msg = 200, apiStatus.getResponseMsg(200)
        except:
            code, msg = 500, apiStatus.getResponseMsg(500)
        result["code"] = code
        result["message"] = msg
    return jsonify(result)
def getTasksByTimerid(timerId):
    """get lists of tasks by timer id"""
    if not judgeIntValid(timerId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        return code, msg, None

    try:
        # disable no member since it is setted flask function
        # may think about change to join query
        relateTasks = TaskToTimer.query.filter_by(timerId = timerId).all()
        relateTaskDict = {}
        for relTask in relateTasks:
            relateTaskDict[relTask.taskId] = relTask.id
        relatedTasksId = [rel.taskId for rel in relateTasks]
        tasks = Task.query.filter(Task.id.in_(relatedTasksId)).all()
        tasksData =[]
        for task in tasks:
            taskDict = task.toDict()
            taskDict["relId"] = relateTaskDict[task.id]
            tasksData.append(taskDict)
        # relatedTasks = db.session.query(TaskToTimer.taskId.label('taskId')).filter( # pylint: disable=maybe-no-member
        #     TaskToTimer.timerId == timerId).subquery() # pylint: disable=maybe-no-member
        # tasks = db.session.query(Task).filter(Task.id.in_(relatedTasks)).all() # pylint: disable=maybe-no-member
        # tasksData = [task.toDict() for task in tasks]
        code, msg = 200, apiStatus.getResponseMsg(200)
    except:
        return 500, apiStatus.getResponseMsg(500), []
    return code, msg, tasksData
def getTimersByTaskid(taskId):
    """get lists of timers by task id"""
    if not judgeIntValid(taskId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        return code, msg, None

    try:
        relatedTasks = db.session.query(TaskToTimer.timerId.label('timerId')).filter( # pylint: disable=maybe-no-member
            TaskToTimer.taskId == taskId).subquery() # pylint: disable=maybe-no-member
        timers = db.session.query(Timer).filter(Timer.id.in_(relatedTasks)).all() # pylint: disable=maybe-no-member
        timersData = [timer.toDict() for timer in timers]
        code, msg = 200, apiStatus.getResponseMsg(200)
    except:
        return 500, apiStatus.getResponseMsg(500), []
    return code, msg, timersData
def getTaskTimer(taskTimerId):
    """This function is used to handle retrieve task from database"""
    if not judgeIntValid(taskTimerId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        return code, msg, None

    try:
        targetTaskTimer = TaskToTimer.query.get(taskTimerId)
    except:
        return 500, apiStatus.getResponseMsg(500), None
    if not targetTaskTimer:
        code, msg = 404, apiStatus.getResponseMsg(404)
    else:
        code, msg = 200, apiStatus.getResponseMsg(200)

    return code, msg, targetTaskTimer
def getTaskList(taskListId):
    """API for getting all tasklists with task list id as taskListId"""
    code, msg, result = 0, '', {"data": None}
    if not judgeIntValid(taskListId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)

    result["data"] = []
    targetTaskList = TaskList.query.get(taskListId)
    if not targetTaskList:
        code, msg = 404, apiStatus.getResponseMsg(404)
    else:
        result["data"] = targetTaskList.toDict()
        code, msg = 200, apiStatus.getResponseMsg(200)
    result["code"] = code
    result["message"] = msg

    return jsonify(result)
def getTimers():
    """This function is for the server to get timers from the database"""
    code, msg, result = 0, "", {"data": None}
    timerId = request.args.get('timerId', None)
    userId = request.args.get('userId', None)
    if timerId is not None :
        if not judgeIntValid(timerId) :
            code, msg = 400, apiStatus.getResponseMsg(400)
            result["code"] = code
            result["message"] = msg
            return jsonify(result)
        targetTimer = Timer.query.get(timerId)  # query by primary key
        if not targetTimer:
            code, msg = 404, apiStatus.getResponseMsg(404)
        else:
            result["data"] = targetTimer.toDict()
            code, msg = 200, apiStatus.getResponseMsg(200)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)
    if userId is not None:
        result['data'] = [] # should also return an empty list
        targetTimer = Timer.query.filter_by(userId=userId).all()
        if not targetTimer:
            code, msg = 404, apiStatus.getResponseMsg(404)
        else:
            # result['data'] = []
            for timer in targetTimer :
                result['data'].append(timer.toDict()) # to iso format
            code, msg = 200, apiStatus.getResponseMsg(200)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)
    code, msg = 400, apiStatus.getResponseMsg(400)
    result["code"] = code
    result["message"] = msg

    return jsonify(result)
def deleteTaskList(taskListId):
    """API for delete a task list with id"""
    code, msg, result = 0, '', {"data": None}
    if not judgeIntValid(taskListId):
        code, msg = 400, apiStatus.getResponseMsg(400)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)

    targetTaskList = TaskList.query.get(taskListId)
    if not targetTaskList:
        code, msg = 404, apiStatus.getResponseMsg(404)
    else:
        try:
            db.session.delete(targetTaskList)
            db.session.commit()
            code, msg = 201, apiStatus.getResponseMsg(201)
        except:
            code, msg = 500, apiStatus.getResponseMsg(500)

    result["code"] = code
    result["message"] = msg
    return jsonify(result)
def deleteTimers(timerId):
    """This function is for the server to delete timers"""
    code, msg, result = 0, "", {"data": None}
    if not judgeIntValid(timerId) :
        code, msg = 400, apiStatus.getResponseMsg(400)
        result["code"] = code
        result["message"] = msg
        return jsonify(result)
    targetTimer = Timer.query.get(timerId)  # query by primary key
    if not targetTimer:
        code, msg = 404, apiStatus.getResponseMsg(404)
    else:

        try:
            db.session.delete(targetTimer)
            db.session.commit()
            result["data"] = {"id": timerId}
            code, msg = 200, apiStatus.getResponseMsg(200)
        except:
            code, msg = 500, apiStatus.getResponseMsg(500)
    result["code"] = code
    result["message"] = msg

    return jsonify(result)
Exemple #13
0
 def testJudgeIntValid(self):
     data = 1
     result = judgeIntValid(data)
     self.assertEqual(result, True)