Esempio n. 1
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)
Esempio n. 2
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # 邮寄信息
        # drift_form.populate_obj(drift)
        drift.set_attrs(drift_form.data)
        # 书籍信息
        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
        try:
            current_user.beans -= 1
            if current_user.beans < 0:
                raise ValueError
        except Exception as e:
            print('写日志')
            raise e
        db.session.add(drift)
Esempio n. 3
0
def save_drift(drift_form, current_gift):
    '''存储交易相关信息到数据库中。'''
    with db.auto_commit():
        drift = Drift()
        # 将表单中的信息赋值到 drift 对象中
        drift_form.populate_obj(drift)

        # 添加请求者信息
        drift.requester_id = current_user.id
        drift.requester_nickname = current_user.nickname

        # 添加赠送者信息
        drift.gift_id = current_gift.id
        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)
Esempio n. 4
0
def save_a_drift(drift_form, current_gift):
    with db.auto_commit():
        book = BookViewModel(current_gift.book)

        drift = Drift()
        drift_form.populate_obj(drift)

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

        drift.gift_id = current_gift.id
        drift.gifter_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        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']

        drift.add()
    send_email(current_gift.user.email,
               '有人想要一本书',
               'email/get_gift.html',
               wisher=current_user,
               gift=current_gift)
Esempio n. 5
0
    def save_a_drift(cls, drift_form, current_gift):
        with db.auto_commit():
            book = BookViewModel(current_gift.book.first)

            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
            drift.book_title = book.title
            drift.book_author = book.author
            drift.book_img = book.image
            drift.isbn = book.isbn
            # 当请求生成时,不需要让这个礼物处于锁定状态
            # 这样赠送者是可以收到多个索取请求的,由赠送者选择送给谁
            # current_gift.launched = True
            # 请求者鱼豆-1
            current_user.beans -= 1
            # 但是赠送者鱼豆不会立刻+1
            # current_gift.user.beans += 1
            db.session.add(drift)
        send_email(current_gift.user.email,
                   '有人想要一本书',
                   'email/get_gift',
                   wisher=current_user,
                   gift=current_gift)
Esempio n. 6
0
def save_drift(drift_form, current_gift):
    """
    保存鱼漂信息
    :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_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)
Esempio n. 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)  # 把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)
Esempio n. 8
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # drift.message = drift_form.message.data
        # drift.address = drift_form.address.data

        # 使用这种drift_form.populate_obj()方法时,forms目录
        # #下的book.py中的字段名称要跟models中drift.py下中的字段要相同
        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.book  # 记录书本信息
        drift.book_title = book['title']
        drift.book_author = book['author']
        drift.book_image = book['image']
        drift.isbn = book['isbn']

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

        db.session.add(drift)  # 把drift提交到session中去(跟新到数据库中)
Esempio n. 9
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)
Esempio n. 10
0
def save_drift(drift_form, current_gift):
    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 = BookSingleModel(current_gift.book)

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

        # 向其他用户请求书籍,本身消耗一个鱼豆
        try:
            if current_user.beans>=1:
                current_user.beans -= 1
        except Exception as e:
            raise e

        db.session.add(drift)
Esempio n. 11
0
def save_drift(drift_form, current_gift):
    """
    将交易填入的信息装在到模型中
    :param drift_form:
    :param current_gift:
    :return:
    """
    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.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)
Esempio n. 12
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
Esempio n. 13
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()

        # wtform:一次性赋值(定义名称需要相同)
        drift_form.populate_obj(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.Waiting

        current_user.beans -= 1

        db.session.add(drift)
Esempio n. 14
0
def save_drift(drift_info, current_gift, gifter, current_user):
    """
    保存交易记录
    :param drift:
    :param current_gift: gift实体
    :param gifter: 礼物拥有者
    :param current_user: 当前登录用户
    :return:
    """
    with db.auto_commit():
        drift = Drift()
        drift.recipient_name = drift_info['recipient_name']
        drift.mobile = drift_info['mobile']
        drift.message = drift_info['message']
        drift.address = drift_info['address']

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

        book = 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 -= Decimal(1).quantize(Decimal('0.00'))
        db.session.add(drift)
Esempio n. 15
0
def save_drift(drift_form, current_gift):
    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 -= 1
        db.session.add(drift)
Esempio n. 16
0
def save_drift(drift_form,current_gift):
    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.gift_id = current_gift.user.id

        book = 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
Esempio n. 17
0
File: drift.py Progetto: pilu01/kk
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # 从form里copy数据到 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
        drift.book_title = current_gift.book.title
        drift.book_author = current_gift.book.author_str
        drift.book_img = current_gift.book.image_large
        current_user.beans -= 1

        db.session.add(drift)
Esempio n. 18
0
def save_drift(drift_form, current_gift):
    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 = 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  # 理论上用户的鱼豆不可能小于1
        db.session.add(drift)
Esempio n. 19
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和模型中的字段名称一致

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

        book = BookViewModel(current_gift.book)

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

        current_user.beans -= 1
Esempio n. 20
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)
        #form和model的名称相同才能复制
        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
        # drift.message = DriftForm.message.data

        book = current_gift.book.first
        drift.book_title = book['title']
        drift.book_author = book['author']
        drift.book_img = book['img']
        drift.isbn = book['isbn']

        current_user.beans -= 1

        db.session.add(drift)
Esempio n. 21
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)
Esempio n. 22
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)
Esempio n. 23
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)  #使用tform带的拷贝方法

        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_ima = book.image
        drift.isbn = book.isbn
        try:
            current_user.beans -= 1
        except Exception as e:
            print(e)
        db.session.add(drift)
Esempio n. 24
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)  # 表单数据复制到指定对象,确保form内字段与对象内字段一致
        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
        # try:
        current_user.beans -= 1
        # except Exception as e:
        # return render_template('not_enough_beans.html', beans=current_user.beans)
        db.session.add(drift)
Esempio n. 25
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_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        book = 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_TRADE_ONE_BOOK']

        db.session.add(drift)
Esempio n. 26
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        drift_form.populate_obj(drift)
        #populate_obj快捷的拷贝所有字段
        #条件是模型中和form中定义的字段的名称必须是相同的
        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)  #简介获取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)
Esempio n. 27
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)
Esempio n. 28
0
def save_drift(drift_form, current_gift):
    with db.auto_commit():
        drift = Drift()
        # drift.message = drift.message.data
        # form将数据复制到制定到对象中,请命名保持一致
        drift_form.populate_obj(drift)

        drift.pending = PendingStatus.Waiting.value

        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_image = book.image
        drift.book_id = book.book_id
        current_user.beans -= 1
        db.session.add(drift)
Esempio n. 29
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)
Esempio n. 30
0
def save_drift(drift_form, current_gift):
    with db.auto_db_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_nickname = current_gift.user.nickname
        drift.gifter_id = current_gift.user.id

        #保存书籍信息到数据库
        book = 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)
Esempio n. 31
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)
Esempio n. 32
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