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)})
Exemple #2
0
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()
Exemple #3
0
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
Exemple #5
0
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()
Exemple #6
0
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()
Exemple #7
0
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()
Exemple #8
0
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