Ejemplo n.º 1
0
def save_to_gifts(isbn):
    '''
    check if isbn valid
    check if book exists
    :param isbn:
    :return:
    '''
    if current_user.can_save_to_list(isbn):
        # transaction
        # enable consistency
        # rollback
        # try:
        with db.auto_commit():
            # here the code is what do after yield
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)

            # db.session.commit()
        # except Exception as e:
        #     db.session.rollback()
        #     raise e
    else:
        flash('already added to your wish list or gift list!')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 2
0
def save_to_gifts(isbn):
    """
    赠送 礼物, 书籍
    :param isbn:
    :return:

    # 数据库事务 sqlalchemy  事务操作


    回滚
    rollback



    """

    if current_user.can_save_tolist(isbn):

        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id

            # xxxxerror
            current_user.beans += BEANS_UPLOAD_ONE_BOOK
            db.session.add(gift)
    else:

        flash("这本书已经添加到你的赠送清单里面了. Sorry,can't save isbn:{}".format(isbn))
        # return "sorry,can't save isbn:{}".format(isbn)

    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 3
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):  # 这里是判断是否是在用户的清单中
        # 如果存储出错,实行事务回滚
        #         try:
        #             gift = Gift()
        #             gift.isbn = isbn
        #             gift.uid = current_user.id  # 获取当前用户的ID,该用户存储在LoginManger中
        #             current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK'] # 增加鱼豆的数量
        #             db.session.add(gift)
        #             db.session.commit()
        #         except Exception as e:
        #             db.session.rollback()
        #             raise e

        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id  # 获取当前用户的ID,该用户存储在LoginManger中
            current_user.beans += current_app.config[
                'BEANS_UPLOAD_ONE_BOOK']  # 增加鱼豆的数量
            db.session.add(gift)
    else:
        print('这本书已经添加到你要赠送的清单或已经存在于你的心愿清单,请不要重复添加!')
        flash('这本书已经添加到你要赠送的清单或已经存在于你的心愿清单,请不要重复添加!')
    # 赠送成功后跳转到原书本详情页面
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 4
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):

        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
        """
        try:
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            raise e
        """

    else:
        flash('这本书已添加至你的赠送清单或存在于你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 5
0
def save_to_gift(isbn):
    if current_user.can_save_to_list(isbn):
        '''
        # 事务
        try:
            gift = Gift()
            gift.isbn = isbn
            # User模型里实现的方法
            gift.uid = current_user.id
            # 加鱼豆
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
            # 上面操作了两张表,SQLAlchemy天然支持事务
            db.session.commit()
        except Exception as e: # 如果不回滚,那么这次和后续的插入都会失败
            db.session.rollback()
            raise e
        '''
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            # User模型里实现的方法
            gift.uid = current_user.id
            # 加鱼豆
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('你当前有赠送这本书或你心愿清单里有这本书')

    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 6
0
def save_to_gift(bid):
    # 事务
    with db.auto_commit():
        gift = Gift()
        gift.bid = bid
        gift.uid = current_user.id
        current_user.beans = 1
        db.session.add(gift)
    return 'ok'
Ejemplo n.º 7
0
def save_to_wish(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            db.session.add(gift)
    else:
        flash('这本书已添加至您的赠送清单或者心愿清单,请勿重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 8
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已经添加到你的赠送清单或已经存在与你的心愿清单,请不要重复添加')
Ejemplo n.º 9
0
def save_to_gifts(isbn):
    gift = Gift()
    gift.isbn = isbn
    gift.uid = current_user.id
    # current_user.beans += 0.5
    current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
    db.session.add(gift)
    db.session.commit()

    pass
Ejemplo n.º 10
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('不要重复赠送书籍或添加愿望清单')
Ejemplo n.º 11
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config["BEANS_UPLOAD_BOOK"]
            db.session.add(gift)
    else:
        flash("这本书已添加至你的赠送清单或已存在于你的心愿清单")
    return redirect(url_for("web.book_detail", isbn=isbn))
Ejemplo n.º 12
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.id = current_user.id
            current_user.beans += current_user.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已添加到赠送清单或心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 13
0
def save_to_gifts(isbn):
    if current_user.can_save_to_db(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash("这本书已经添加至你的赠送清单或者已经存在于你的心愿清单,请勿重复添加。")
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 14
0
def save_gift(isbn):
    if current_user.can_save_to_gift:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        return jsonify(saved=0)
    return jsonify(saved=1)
Ejemplo n.º 15
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):  #判断能否存入赠送清单
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id  #一个实例化后的User的模型,通过模型中的get_user来转化为一个模型
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已经在你的心愿清单了')
    return redirect(url_for('web.book_detail', isbn=isbn))  #赠送成功后重定向到当前书籍页面
Ejemplo n.º 16
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():  # 通过自定义的上下文管理器来实现自动提交和回滚
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id  # 通过flask_login来获取uid,事实上flask_login只把uid存储在cookie中,然后通过models/user中的1.1来进行数据读取
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已经添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')

    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 17
0
def save_to_gifts(isbn):
    if current_user.can_saveto_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            gift.uid = current_user.id
            db.session.add(gift)
    else:
        flash('这本书已存在于你的心愿单或者赠送清单,请勿重复添加')
    # 视图函数必须要返回值
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 18
0
def create(isbn):
    uid = g.user.uid  # 拿到当前需要赠送礼物的uid号
    with db.auto_commit():
        Book.query.filter_by(isbn=isbn).first_or_404()  #检测是否是在数据库中
        gift = Gift.query.filter_by(isbn=isbn, uid=uid).first()
        if gift:   # 检测是否重复
            raise DuplicateGift()
        gift = Gift()
        gift.isbn = isbn
        gift.uid = uid
        db.session.add(gift)
    return Success()
Ejemplo n.º 19
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            # database transaction
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('already added into gift or wish')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 20
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.coins += current_app.config['COINS_UPLOAD_ONE_BOOK']
            current_user.send_counter += 1
            db.session.add(gift)
    else:
        flash('不要重复添加!')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 21
0
def create(isbn):
    uid = g.user.uid
    with db.auto_commit():
        Book.query.filter_by(isbn=isbn).first()
        gift = Gift.query.filter_by(uid=uid, isbn=isbn, launched=False).first()
        if gift:
            raise DuplicateGift()
        gift = Gift()
        gift.uid = uid
        gift.isbn = isbn
        db.session.add(gift)
    return Success()
Ejemplo n.º 22
0
def create(isbn):
    uid = g.user.uid
    with db.auto_commit():
        Book.query.filter_by(isbn=isbn).first_or_404()
        gift = Gift.query.filter_by(isbn=isbn, uid=uid).first()
        if gift:
            raise DuplicateGift()
        gift = Gift()
        gift.isbn = isbn
        gift.uid = uid
        db.session.add(gift)
    return Success()
Ejemplo n.º 23
0
def save_to_gifts(isbn):
    yushu_book = YuShuBook()
    yushu_book.search_by_isbn(isbn)
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            gift = Gift()
            gift.uid = current_user.id
            gift.isbn = isbn
            db.session.add(gift)
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
    else:
        flash('这本书已添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 24
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():

            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)

    else:
        flash('this book already in the list , do not add it again')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 25
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        #Transactions
        #rollback
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('This book is already in your gift list or wish list')
    return redirect(url_for('web.book_datail', isbn=isbn))
Ejemplo n.º 26
0
def create_gift(isbn):
    uid = g.user.uid
    with db.auto_commit():
        Book.query.filter_by(isbn=isbn).first_or_404()
        gift = Gift.query.filter_by(isbn=isbn, uid=uid, launched=False).first()
        wish = Wish.query.filter_by(isbn=isbn, uid=uid, launched=False).first()
        if gift or wish:
            raise DuplicateGift()
        gift = Gift()
        gift.isbn = isbn
        gift.uid = uid
        db.session.add(gift)
    return Success(code=201)
Ejemplo n.º 27
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # 事务 回滚
        # try:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已添加至你的礼物清单或已经存在与你的心愿清单')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 28
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # auto_commit为自定义上下文管理器
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash("书籍已经存在心愿清单或者愿望清单中")

    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 29
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # 事务,操作了两个表。虽然只有 commit 才会提交,但是依然需要 rollback,否则后面的都会报错
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            # -------------------------
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(gift)
    else:
        flash('这本书已经在你的清单里,不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Ejemplo n.º 30
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list():
        try:
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id
            current_user.beans += current_app.config['BEANS_PER_UPLOAD']
            db.session.add(gift)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
    else:
        flash('The book is already in wishlist.')