Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)