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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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中去(跟新到数据库中)
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
def save_drift(drift_form, current_gift): ''' 保存 鱼漂模型 实现将DriftForm表单中的信息赋值到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.request_id = current_user.id drift.request_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)
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)
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)
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)
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)
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
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 -= 1 db.session.add(drift)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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