Example #1
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("这本书以添加进您的赠送清单或已经存在于您的心愿清单,请不要重复添加")
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #2
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # 事务,保证user和gift的一致性,rollback
        # try:
        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)
            # db.session.commit()
        # except Exception as e:
        #     db.session.rollback()
        #     raise e
    else:
        flash('这本书已经添加至你的赠送清单或者一存在于你的心愿清单,请不要重复添加')
    return redirect('web.book_detail', isbn=isbn)
Example #3
0
def save_to_gifts(isbn):
    yushu_book = YuShuBook()
    yushu_book.search_by_isbn(isbn)
    # gifting = Gift.query.filter_by(uid=current_user.id, isbn=isbn, status=1,
    #                                launched=False).first()
    # wishing = Wish.query.filter_by(uid=current_user.id, isbn=isbn, status=1,
    #                                launched=False).first()
    if current_user.can_save_to_list(isbn):
        # 既不在赠送清单,也不在心愿清单才能添加
        with db.auto_commit():
            gift = Gift()
            gift.uid = current_user.id
            gift.isbn = isbn
            # gift.book_id = yushu_book.data.id
            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))
Example #4
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # 事务
        # rollback
        # try:
        with db.auto_commit():
            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()
        # except Exception as e:
        #     db.session.rollback()
        #     raise e
    else:
        flash('这本书已添加至你的赠送清单或者已存在你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #5
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # try:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            # 获得当前用户的id
            gift.uid = current_user.id
            # 当前用户增加0.5个鱼豆
            # current_user.beans += 0.5
            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))
Example #6
0
def book_uplode():
    form = LengForm(request.form)
    book = Book()
    uid = current_user.id
    if request.method == 'POST' and form.validate():

        image = request.files['image']
        fname = image.filename
        UPLOAD_FOLDER = current_app.config['UPLOAD_FOLDER']
        ALLOWED_EXTENSIONS = ['png', 'jpg', 'jpeg', 'jpg']
        flag = '.' in fname and fname.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
        if not flag:
            flash('文件类型错误,请检查上传的图片类型,仅限于png、PNG、jpg、JPG')
            return redirect(url_for('views.book_uplode'))
        if Book.query.filter_by(isbn=book.isbn).first():
            flash("已经存在这本书了,快去搜索栏搜索吧")
        else:
            with db.auto_commit():
                image.save('{}{}'.format(UPLOAD_FOLDER, fname))
                book.image = '/static/uplode/{}'.format(fname)
                book.title = form.title.data
                book.author = form.author.data
                book.isbn = form.isbn.data
                book.publisher = form.publisher.data
                book.summary = form.summary.data
                db.session.add(book)

        if Gift.query.filter_by(isbn=book.isbn, uid=uid,
                                launched=False).first():
            flash('这本书已经添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')
        else:
            with db.auto_commit():
                gift = Gift()
                gift.isbn = form.isbn.data
                gift.uid = uid
                current_user.beans += current_app.config[
                    'BEANS_UPLOAD_ONE_BOOK']
                db.session.add(gift)

        return redirect(url_for('views.book_uplode'))
    return render_template('book_uplode.html', form=form)
Example #7
0
File: gift.py Project: X1903/fisher
def save_to_gifts(isbn):
    '''怎送此书'''
    if current_user.can_save_to_list(isbn):
        #  事物
        # rollback
        # try:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id  # current_user代表实例化后的User模型
            ##############
            current_user.beans += current_app.config['BEANS_UPLODA_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))
Example #8
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        #事务
        #rollback
        # try:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            gift.uid = current_user.id  #current_user 与user中的模型get_user方法相对
            # current_user.beans +=0.5  #鱼豆
            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('这本书已存在你的赠送清单,或者你的心愿清单,请不要重复添加')
    # ajax技术不刷新页面返回数据  或者将整个页面缓存起来,从而提高服务器性能
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #9
0
def save_to_gifts(isbn):
    '''
    保存到赠送清单  1 确定是否能保存到清单
                2 礼物的isbn  用户id  鱼漂数量增加
    :param isbn:
    :return:
    '''
    if current_user.can_save_to_list(isbn):
        '''
        事务 回滚机制
        一般只要进行db.session.commit()
        最好try..except..进行事务的回滚操作
        '''
        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))
Example #10
0
def save_to_gifts(isbn):
    #假如事务提交失败了,需进行回滚 rollback
    if current_user.can_save_to_list(isbn):
        # try:
        #     gift = Gift()
        #     gift.uid = current_user.id  #current_user指代当前登陆的用户 通过def get_user(uid):获取当前用户信息
        #     # current_user.beans += 0.5
        #     current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
        #     db.session.add(gift)
        #     db.session.commit()
        # except  Exception as e:
        #     db.session.rollback()  #假如commit或者前面流程报错,则进行事务回滚
        #     raise e  #抛出异常
        with db.auto_db_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))
Example #11
0
def save_to_gifts(isbn):
    if current_user.can_save_to_list(isbn):
        # 事务
        # 回滚
        # try:
        with db.auto_commit():
            gift = Gift()
            gift.isbn = isbn
            # current_user实际上是实例化的User模型
            gift.uid = current_user.id
            ##########################
            # 每上传一本书赠送0.5个鱼豆
            # current_user.beans += 0.5
            current_user.beans += current_app.config['BEANS_UPLODAD_ONE_BOOK']
            db.session.add(gift)
            # db.commit()
        # except Exception as e:
        #     # 如果try语句执行失败,则回滚
        #     db.session.rollback()
        #     raise e
    else:
        flash('这本书已经添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #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.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('这本书已经在赠送清单或心愿清单,请不要重复添加')
    # book_detail -> save_to_gifts -> book_detail
    # 这里 book_detail会重新渲染,可以考虑 使用 Ajax 和静态文件缓存
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #13
0
def save_to_gifts(isbn):
    """
    赠送书籍
    current_user 就是我们实例化后的User模型,可以通过模型去拿到属性
    :param isbn:
    :return:
    """
    if current_user.can_save_to_list(isbn):
        # 事务 提交与回滚
        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:
        # ajax 技术进行改善原本所在页面在完成要求后回到原页面
        flash('这本书已添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))