def rating_book_request_impl(args): try: book_name = args['book_name'] author_name = args['author_name'] category_name = args['category_name'] rating = args['rating'] if len(book_name) == 0: raise InvalidBookNameException if rating < 0 or rating > 5: raise InvalidRatingException book = find_book_with_name(book_name) if book is None: book = Book(book_name, author_name, category_name) db.session.add(book) rating = Rating(rating, book) db.session.add(rating) book.ratings.append(rating) db.session.commit() return Response(True, "Book Rating Done", BookSchema().dumps(book).data).output() except Exception as e: return json.dumps({"error": str(e)})
def append_log_impl(args): try: user = user_by_user_id(args['user_id']) logs = [] if args['logs'] is None: return Response(True, "Logs Appended", LogSchema(many=True).dumps(logs).data).output() for log_dict in args['logs']: validate(log_dict) log = None if log_dict.has_key('id') and log_dict['id'] is not None: log = log_by_id(log_dict['id']) if log is None: log = ReadingLog() else: log = ReadingLog() log.book = find_book_with_name(log_dict['book_name']).id log.date = parse(log_dict['date']) log.pages = log_dict['pages'] log.uuid = log_dict['uuid'] log.user = user.user_id db.session.add(log) logs.append(log) db.session.commit() return Response(True, "Logs Appended", LogSchema(many=True).dumps(logs).data).output() except Exception as e: return Response(False, str(e), None).output()
def user_book_from_book_name(book_name, user_id): user_book = UserBooks.query.filter( UserBooks.book_id == find_book_with_name(book_name).id, UserBooks.user_id == user_id).first() if user_book is None: raise UserBookNotFoundException() return user_book
def append_book_impl(args): try: user = user_by_user_id(args['user_id']) books = [] if args['books'] is None: return Response(True, "Books Appended", UserBookSchema(many=True).dumps(books).data).output() for book_dict in args['books']: validate(book_dict) book_name = book_dict['name'] book = dao.find_book_with_name(book_name) if book is None: book = Book(book_name, book_dict['author'], book_dict['category']) db.session.add(book) db.session.commit() try: user_book = user_book_from_book_name(book_name, user_by_user_id(args['user_id']).id) user_book.pages = book_dict['pages'] user_book.pages_read = book_dict['pages_read'] user_book.rate = book_dict['rate'] user_book.loved = book_dict['loved'] user_book.snippet = book_dict['snippet'] user_book.cover_url = book_dict['cover_url'] except Exception as e: user_book = UserBooks(user, book, book_dict['pages_read'], book_dict['pages'], book_dict['rate'], book_dict["snippet"]) user_book.cover_url = book_dict['cover_url'] db.session.add(user_book) db.session.commit() books.append(user_book) return Response(True, "Books Appended", UserBookSchema(many=True).dumps(books).data).output() except Exception as e: return Response(False, str(e), None).output()
def validate(log_dict): pages = log_dict['pages'] date = log_dict['date'] book_name = log_dict['book_name'] if find_book_with_name(book_name) is None: raise BookNotFoundException() if pages == 0 or len(date) == 0: raise InvalidLogException()
def append_book_impl(args): try: user = user_by_user_id(args['user_id']) books = [] if args['books'] is None: return Response( True, "Books Appended", UserBookSchema(many=True).dumps(books).data).output() for book_dict in args['books']: validate(book_dict) book_name = book_dict['name'] book = dao.find_book_with_name(book_name) if book is None: book = Book(book_name, book_dict['author'], book_dict['category']) db.session.add(book) db.session.commit() try: user_book = user_book_from_book_name( book_name, user_by_user_id(args['user_id']).id) user_book.pages = book_dict['pages'] user_book.pages_read = book_dict['pages_read'] user_book.rate = book_dict['rate'] user_book.loved = book_dict['loved'] user_book.snippet = book_dict['snippet'] user_book.cover_url = book_dict['cover_url'] except Exception as e: user_book = UserBooks(user, book, book_dict['pages_read'], book_dict['pages'], book_dict['rate'], book_dict["snippet"]) user_book.cover_url = book_dict['cover_url'] db.session.add(user_book) db.session.commit() books.append(user_book) return Response(True, "Books Appended", UserBookSchema(many=True).dumps(books).data).output() except Exception as e: return Response(False, str(e), None).output()
def user_book_from_book_name(book_name, user_id): user_book = UserBooks.query.filter(UserBooks.book_id == find_book_with_name(book_name).id, UserBooks.user_id == user_id).first() if user_book is None: raise UserBookNotFoundException() return user_book