예제 #1
0
def remove_from_wishlist(isbn: str) -> Response:
    res = CustomResponse()
    if current_user is None:
        logout_user()
        return res.get_response()
    try:
        if isbn not in list(
                map(lambda item: item.book_isbn, current_user.wishlist_items)):
            raise RecordNotFoundException(isbn)
        db.session.delete(
            list(
                filter(lambda item: item.book_isbn == isbn,
                       current_user.wishlist_items))[0])
        db.session.commit()
        res.set_data(
            list(
                map(lambda item: item.get_relaxed_view(),
                    current_user.wishlist_items)))
    except RecordNotFoundException as e:
        db.session.rollback()
        res.set_error(e.message)
    except:
        db.session.rollback()
        res.set_error(Config.UNHANDLED_EXCEPTION_MESSAGE)
    return res.get_response()
예제 #2
0
def get_book(isbn: str) -> Response:
    res = CustomResponse(data=[])
    try:
        book = db.session.query(Book).get(isbn)
        if book is None:
            raise RecordNotFoundException(isbn)
        res.set_data(book.get_relaxed_view())
    except RecordNotFoundException as e:
        res.set_error(e.message)
    return res.get_response()
예제 #3
0
def close_loan(id: str) -> Response:
    res = CustomResponse()
    try:
        loan = db.session.query(Loan).get(id)
        if loan is None:
            raise RecordNotFoundException(id)
        loan.close()
        db.session.commit()
    except RecordNotFoundException as e:
        db.session.rollback()
        res.set_error(e.message)
    except IntegrityError:
        db.session.rollback()
        res.set_error(Config.UNHANDLED_EXCEPTION_MESSAGE)
    return res.get_response()
예제 #4
0
def accept_library_reservation(id: str) -> Response:
    res = CustomResponse()
    try:
        item = db.session.query(CustomerWishlistItem).get(id)
        if item is None or item.id not in list(
                map(lambda it: it['id'],
                    fetch_library_reservations().json['data'])):
            raise RecordNotFoundException(id)
        # TODO: mark item as accepted
        db.session.commit()
        res.set_data(item.get_librarian_relaxed_view())
    except RecordNotFoundException as e:
        db.session.rollback()
        res.set_error(e.message)
    return res.get_response()
예제 #5
0
def remove_item_from_library_wishlist(id: str) -> Response:
    res = CustomResponse()
    try:
        item = db.session.query(LibrarianWishlistItem).get(id)
        if item is None:
            raise RecordNotFoundException(id)
        db.session.delete(item)
        db.session.commit()
        res.set_data({'id': id})
    except RecordNotFoundException as e:
        db.session.rollback()
        res.set_error(e.message)
    except IntegrityError as e:
        db.session.rollback()
        res.set_error(Config.UNHANDLED_EXCEPTION_MESSAGE)
    return res.get_response()
예제 #6
0
def disable_book(isbn: str) -> Response:
    res = CustomResponse()
    try:
        book = db.session.query(Book).get(isbn)
        if book is None or book.deleted:
            raise RecordNotFoundException(isbn)
        book.disable_record()
        db.session.commit()
        res.set_data(book.get_relaxed_view())
    except RecordNotFoundException as e:
        db.session.rollback()
        res.set_error(e.message)
    except IntegrityError:
        db.session.rollback()
        res.set_error(Config.UNHANDLED_EXCEPTION_MESSAGE)
    return res.get_response()