Example #1
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # drift.message = drift_form.message.data
        drift_form.populate_obj(
            drift)  # 把form的所有字段拷贝到模型中,populate_obj,字段名称需要相同

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        # 获取书籍信息
        # book = current_gift.book.first

        # drift.book_title = book['title']  # 字典和对象不一样,需要用[]访问
        book = BookViewModel(current_gift.book)
        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image.get('large', '')
        drift.isbn = book.isbn

        current_user.beans -= 1  # 理论上不会是负值,但也可以加上判断

        db.session.add(drift)
Example #2
0
def sava_drift(drift_form, current_gift):
    """
    把某一次表单填写的交易保存为 Drift 类,写入数据库中
    :param drift_form:
    :param current_gift:
    :return:
    """
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)  # 确保名称相同,表单信息可以进行复制

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        book = BookViewModel(current_gift.book)

        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image
        drift.isbn = book.isbn

        current_user.beans -= current_app.config['BEANS_EVERY_DRIFT']

        db.session.add(drift)
Example #3
0
def save_drift(drift_form, current_gift):
    try:
        drift = Drift()
        # drift.message = drift_form.mesage.data
        drift_form.populate_obj(drift)

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_id = current_gift.user.id
        drift.gifter_nickname = current_gift.user.nickname

        book = BookViewModel(current_gift.book)

        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image
        drift.isbn = book.isbn

        current_user.beans -= 1
        db.session.add(drift)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        raise e
Example #4
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # 使用poplutate_obj,如果模型中字段的名称和form中字段名称相同
        # 就可以将form中的模型字段拷贝到drift模型中
        drift_form.populate_obj(drift)

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        # book原本是字典,需要通过字典的方式来访问
        # 为了保证调用的统一性将current_gift获取到的数据
        # 用BookViewModel构建成一个对象
        book = BookViewModel(current_gift.book)

        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image
        drift.isbn = book.isbn

        current_user.beans -= 1

        db.session.add(drift)
Example #5
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # drift.message = drift_form.message.data
        drift_form.populate_obj(drift)

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_id = current_gift.user.id
        drift.gifter_nickname = current_gift.user.nickname

        book = BookViewModel(current_gift.book)
        drift.isbn = book.isbn
        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image

        current_user.beans -= 1

        db.session.add(drift)
Example #6
0
def save_drift(drift_form, my_gift):
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)

        drift.gift_id = my_gift.id
        drift.requester_id = current_user.id
        drift.recipient_name = current_user.nickname
        drift.gifter_nickname = my_gift.user.nickname
        drift.gifter_id = my_gift.user.id

        yushu_book = Yushubook()
        yushu_book.search_by_isbn(isbn=my_gift.isbn)
        book = BookViewModel.collection(data=yushu_book)['books'][0]

        drift.book_author = book['author']
        drift.book_img = book['image']
        drift.book_title = book['title']
        drift.pending = PendingStatus.waiting

        db.session.add(drift)
Example #7
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # drift.message = drift_form.message.data
        drift_form.populate_obj(drift)

        # 确定鱼漂
        drift.gift_id = current_gift.id

        # 索要者信息
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname

        # 赠送者信息
        drift.gifter_id = current_gift.user.id
        drift.gifter_nickname = current_gift.user.nickname

        # 书籍信息
        book = BookViewModel(current_gift.book)
        drift.isbn = book.isbn
        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image

        # # 书籍信息的另一种写法
        # # 此时的book是一个字典
        # book = current_gift.book.first
        #
        # # 用字典取值的方式取值
        # drift.isbn = book['isbn']
        # drift.book_title = book['title']
        # drift.book_author = book['author']
        # drift.book_img = book['image']

        # 鱼豆消耗1个
        current_user.beans -= 1

        db.session.add(drift)
Example #8
0
def save_drift(drift_form, current_gift):
    # 保存到drift, 用户鱼豆-1
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)  # 把drift_form中的元素都添加到drift对应的属性中,名字需相同

        book = BookViewModel(current_gift.book)
        drift.isbn = book.isbn
        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image

        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname

        drift.gifter_id = current_gift.user.id
        drift.gift_id = current_gift.id
        drift.gifter_nickname = current_gift.user.nickname
        # drift.pending = PendingStatus.Witing  # pending默认是1,不用再进行赋值

        current_user.beans -= 1

        db.session.add(drift)
Example #9
0
def save_drift(drift_form, current_gift):
    # 保存鱼漂到数据库中
    with db.auto_commit():
        drift = Drift()
        # 使用populate_obj()是将目标对象drift对应的模型字段全部导入
        # 前提是要写入到数据库的字段必须和原模型字段相同
        drift_form.populate_obj(drift)

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        book = BookViewModel(current_gift.book)

        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image
        drift.isbn = book.isbn

        current_user.beans -= 1
        db.session.add(drift)
Example #10
0
def save_drift(drift_form, current_gift):
    if current_user.beans < 1:
        # TODO 自定义异常
        raise Exception()

    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)

        drift.gift_id = current_gift.id
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        book = BookViewModel(current_gift.book)
        drift.book_title = book.title
        drift.book_author = book.author
        drift.book_img = book.image
        drift.isbn = book.isbn

        db.session.add(drift)

        current_user.beans -= 1