def create_and_store_purchase_option(self, temp_book, isbn, price): errors = [] # Check if book has correct ISBN # Check DB for duplicate isbn entry. # If so just make purchase option book = Book.get(isbn=isbn) if not book: book = Book() book.author = temp_book.author if temp_book.subtitle is None: book.title = temp_book.title else: book.title = temp_book.title+': ' + temp_book.subtitle book.isbn = isbn book.save() # add purchaseChoice to DB p = PurchaseChoice() p.book_id = book.id p.price = price p.type = 'Hardcover' p.isRental = False p.link = '' # TODO change to valid link p.local_seller_id = current_user.id p.isLocalSeller = True p.save() return errors
def fill_list_by_bookid(self, option_list, book_id): def add_to_list(old_list, option): if not option: return old_list elif not option.price: return old_list option.price = "{:.2f}".format(float(option.price)) if option.isLocalSeller: local_seller = User.get(id=option.local_seller_id) old_list.append({ 'seller': local_seller.username, 'price': option.price, 'rental': option.isRental, 'book_type': option.type, 'link': option.link, 'purchaseID': option.id }) else: old_list.append({ 'seller': option.remoteSellerName, 'price': option.price, 'rental': option.isRental, 'book_type': option.type, 'link': option.link, 'purchaseID': option.id }) return old_list query_return = PurchaseChoice.get(book_id=book_id) if isinstance(query_return, list): for option in query_return: option_list = add_to_list(option_list, option) else: option_list = add_to_list(option_list, query_return) return option_list
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