def get(self, task_id): task: TaskModel = TaskModel.find_by_id(task_id) if not task: abort(404, message=TASK_DOESNT_EXIST) community_member_ids = [m.id for m in task.community.users] user = UserModel.find_by_username(get_jwt_identity()) if user.id not in community_member_ids: abort(401, message=UNAUTHORIZED) set_km_to_next_instance(task) return task, 200
def put(self, task_id): parser = reqparse.RequestParser() parser.add_argument('time_next_instance', type=moment, required=False) parser.add_argument('time_interval', type=int, required=False) parser.add_argument('name', type=str) parser.add_argument('description', type=str) parser.add_argument('km_interval', type=int, required=False) parser.add_argument('km_next_instance', type=float, required=False) data = parser.parse_args() task: TaskModel = TaskModel.find_by_id(task_id) if not task: abort(404, message=TASK_DOESNT_EXIST) if not task.is_reocurrent: abort(401, message=NON_REOCURRENT_TASKS_CANNOT_BE_UPDATED) community_member_ids = [m.id for m in task.community.users] user = UserModel.find_by_username(get_jwt_identity()) if user.id not in community_member_ids: abort(401, message=UNAUTHORIZED) if not (data['time_next_instance'] and data['time_interval'] or data['km_interval'] and data[ 'km_next_instance']) or data['km_interval'] and (data['time_interval'] or data['time_next_instance']) or \ data['time_interval'] and (data['km_interval'] or data['km_next_instance']): abort(400, message=TASK_MUST_BE_EITHER_TIME_OR_KM_TRIGGERED) time_interval = None if data['time_interval']: time_interval = timedelta(days=data['time_interval']) task.time_interval = time_interval task.time_next_instance = data['time_next_instance'] task.km_interval = data['km_interval'] task.km_next_instance = data['km_next_instance'] task.name = data['name'] task.description = data['description'] try: task.persist() set_km_to_next_instance(task) return task, 200 except: abort(500, message=INTERNAL_SERVER_ERROR)
def delete(self, task_id): task: TaskModel = TaskModel.find_by_id(task_id) if not task: abort(400, message=TASK_DOESNT_EXIST) community_member_ids = [m.id for m in task.community.users] user = UserModel.find_by_username(get_jwt_identity()) if user.id not in community_member_ids: abort(401, message=UNAUTHORIZED) try: task.delete_by_id(task_id) return SimpleMessage(TASK_DELETED), 200 except: abort(500, message=INTERNAL_SERVER_ERROR)