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()
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()
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()
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()
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()
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()