def testJudgeIntValidBoundary(self): data = 65536 result = judgeIntValid(data) self.assertEqual(result, False) data = -1001 result = judgeIntValid(data) self.assertEqual(result, False)
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)
def testJudgeIntValid(self): data = 1 result = judgeIntValid(data) self.assertEqual(result, True)