def store_book_info_for_user_and_isbn(user_id, isbn, isbns_to_retry): # add book object b = Book() # create temp book object query_book = Book.get( isbn=isbn ) # check if Book object is already in DB if not query_book: temp_arr = get_books_for_book_title_using_google_books( 'isbn:' + isbn ) if len(temp_arr) == 0: AZ = AmazonScraper() amazon_dict = AZ.get_amazon_purchase_choices_for_keyword(isbn) if len(amazon_dict) == 0: isbn_info = {} isbn_info['isbn'] = isbn isbn_info['user_id'] = user_id isbn_info['retries'] = 0 isbns_to_retry.append(isbn_info) return False temp_book = Book() temp_book.isbn = amazon_dict[0].get('isbn') temp_book.title = amazon_dict[0].get('title') temp_book.author = amazon_dict[0].get('author') temp_book.thumbnail_link = amazon_dict[0].get('thumbnail_link') temp_book.subtitle = '' temp_arr.append(temp_book) temp_var = temp_arr[0] b.isbn = temp_var.isbn b.author = temp_var.author if(temp_var.subtitle is None): b.title = temp_var.title # check if subtitle is null else: b.title = ( temp_var.title + ': ' + temp_var.subtitle # check if subtitle is null ) b.thumbnail_link = temp_var.thumbnail_link # Sometimes, the isbn found by the scraper differs from the one # in the file # In this case, a duplicate book would be created (same isbn) # Check for found isbn first before saving book possible_duplicate_book = Book.get(isbn=b.isbn) if possible_duplicate_book: b = possible_duplicate_book else: b.save() # save book else: # if book in DB, set b.id to id of DB book b.id = query_book.id # Make purchase choice p = PurchaseChoice() p.id = b.id p.price = randint(55, 250) # default to 10 p.type = 'Hardcover' p.isRental = False p.link = '' # change to valid link p.local_seller_id = user_id # change to user once login is created p.isLocalSeller = True p.save() booksV = BooksViewed() booksV.user_id = user_id booksV.book_id = b.id booksV.save() return True
def get_book_from_isbn(self, isbn): errors = [] book = get_books_for_book_title_using_google_books('isbn:' + isbn) if not book: errors.append('ISBN is invalid') return book, errors