Beispiel #1
0
def add_authors_to_book(book, authors_names):
    for author_name in authors_names:
        author = AuthorModel.query.filter_by(name=author_name).first()
        if author is None:
            author = AuthorModel(name=author_name)
            db_session.add(author)
            db_session.flush()

        book_author = BookAuthorModel(book_id=book.id, author_id=author.id)
        db_session.add(book_author)
        db_session.flush()
Beispiel #2
0
def add_categories_to_book(book, categories_names):
    for category_name in categories_names:
        category = CategoryModel.query.filter_by(name=category_name).first()
        if category is None:
            category = CategoryModel(name=category_name)
            db_session.add(category)
            db_session.flush()

        book_categories = BookCategoryModel(book_id=book.id,
                                            category_id=category.id)
        db_session.add(book_categories)
        db_session.flush()
Beispiel #3
0
def create_book_by_openlibrary_info(book_info):
    book = BookModel(title=book_info.get("title"),
                     sub_title=book_info.get("subtitle"),
                     publish_date=book_info.get("publish_date"),
                     publisher=book_info.get("publishers", [None])[0],
                     description=book_info.get("description", {}).get("value"))
    db_session.add(book)
    db_session.flush()

    add_authors_to_book(book, book_info.get("author_name", []))
    add_categories_to_book(book, book_info.get("subjects", []))

    db_session.commit()

    return book
Beispiel #4
0
def create_book_by_google_info(book_info):
    book = BookModel(title=book_info.get('volumeInfo', {}).get("title"),
                     sub_title=book_info.get('volumeInfo', {}).get("subtitle"),
                     publish_date=book_info.get('volumeInfo',
                                                {}).get("publishedDate"),
                     publisher=book_info.get('volumeInfo',
                                             {}).get("publisher"),
                     description=book_info.get('volumeInfo',
                                               {}).get("description"))
    db_session.add(book)
    db_session.flush()

    add_authors_to_book(book,
                        book_info.get('volumeInfo', {}).get("authors", []))
    add_categories_to_book(
        book,
        book_info.get('volumeInfo', {}).get("categories", []))

    db_session.commit()

    return book
Beispiel #5
0
def remove_category_to_book(book):
    BookCategoryModel.query.filter_by(book_id=book.id).delete()
    db_session.flush()
Beispiel #6
0
def remove_author_to_book(book):
    BookAuthorModel.query.filter_by(book_id=book.id).delete()
    db_session.flush()