def send_drift(gid): # 发起索要图书请求 # 1.检查是不是自己的 # 2.检查鱼豆是否大于1 # 3.是否满足,成功索要两本书,必须成功送出一本书 gift = Gift.query.filter_by(id=gid).first_or_404() if gift.is_myself_gift(current_user.id): flash('这本书是你自己的^_^, 不能向自己索要书籍噢') return redirect(url_for('web.book_detail', isbn=gift.isbn)) if not current_user.can_send_drift(): return render_template('not_enough_beans.html', beans=current_user.beans) wtform = DriftForm(request.form) # 步入正文 if request.method == 'POST' and wtform.validate(): drift = Drift() drift.save_to_drift(wtform, gift, current_user.id, current_user.nickname) send_mail(gift.user.email, '有人想要您上传的图书: 《' + gift.book['title'] + '》', 'email/get_gift.html', wisher=current_user, gift=gift) return redirect(url_for('web.pending')) user = User.query.filter_by(id=gift.uid).first_or_404() viewmodel = UsersSummary(user) return render_template('drift.html', gifter=viewmodel.first, user_beans=current_user.beans, form=wtform)
def send_drift(gid): gift = Gift.query.get_or_404(gid) if gift.is_myself_gift(current_user.id): return redirect(url_for('web.book_detail', isbn=gift.isbn)) if not current_user.can_send_drift(): return render_template('not_enough_beans.html', beans=current_user.beans) wtform = DriftForm(request.form) if request.method == 'POST' and wtform.validate(): drift = Drift() drift.save_to_drift(wtform, gift, current_user.id, current_user.nickname) send_mail(gift.user.email, '有人想要您上传的图书: 《' + gift.book['title'] + '》', 'email/get_gift.html', wisher=current_user, gift=gift) return redirect(url_for('web.pending')) user = User.query.filter_by(id=gift.uid).first_or_404() viewmodel = UsersSummary(user) return render_template('drift.html', gifter=viewmodel.first, user_beans=current_user.beans, form=wtform)
def send_drift(gid): form = DriftForm(request.form) current_gift = Gift.query.get_or_404(gid) if current_gift.is_yourself_gift(current_user.id): flash('这本书是你自己的^_^, 不能向自己索要书籍噢') return redirect(url_for('web.book_detail', isbn=current_gift.isbn)) if not current_user.can_send_gift(): return render_template("not_enough_beans.html", beans=current_user.beans) gifter = current_gift.user.summary if request.method == "POST" and form.validate(): drift = Drift() drift.save_drift(form, current_gift) send_email(current_gift.user.email, '有人想要一本书', 'email/get_gift.html', wisher=current_user, gift=current_gift) return redirect(url_for("web.pending")) return render_template("drift.html", gifter=gifter, user_beans=current_user.beans, form=form)
def save_of_drift_by_gift(): # 通过向他人赠送书籍--送出书籍 uid = g.user.id data = request.json book = data['book'] # 对方-->接收者 wish_id = data['wish_id'] requester = Wish.query.get(wish_id).consumer # 我-->赠送者 gifter = Gift.query.filter_by(soft=True, launched=False, uid=uid).first() drift = Drift(book=book, requester=requester, gifter=gifter) drift.save_drift() return Success()
def pending(): drifts = Drift.user_drifts() drifts_view = DriftCollection() drifts_view.fill(drifts) return render_template('pending.html', total=drifts_view.total, drifts=drifts_view.drifts)
def __set_of_drift_by_did(drift_id=None, mail=None, message=None): drift = Drift.get_drift(drift_id) drift.recipient_name = mail['nickname'] drift.mobile = mail['mobile'] drift.address = mail['province']+mail['city']+mail['address'] drift.message = message return drift
def save_drift(drift_form, current_gift): drift = Drift() with db.auto_commit(): drift_form.populate_obj(drift) drift.gift_id = current_gift.id drift.requester_id = current_user.nickname drift.requester_nickname = current_gift.user.nickname drift.gifter_id = current_gift.user.id book = BookViewModel(current_gift.book.first) drift.book_title = book.title drift.book_author = book.author drift.book_img = book.image drift.isbn = book.isbn current_user.beans -= 1
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 redraw_drift(did): # 超权 # uid:1 did:1 # uid:2 did:2 with db.auto_commit(): drift = Drift.filter_by(requester_id=current_user.id, id=did).first_or_404() drift.pending = PendingStatus.Redraw current_user.beans += 1 return redirect(url_for('web.pending'))
def __init__(self, trade, is_gifter=False, is_wisher=False): self.is_gifter = is_gifter self.is_wisher = is_wisher self.trade = trade self.id = trade.id self.create_time = trade.create_time self.nickname = trade.consumer.wx_name self.gifter_id = self.__get_gifter_id() self.request_id = self.__get_request_id() self.is_gifted_or_requested = Drift.is_gifted_or_requested(trade.bid, self.gifter_id, self.request_id)
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_of_drift_by_request(): # 通过向他人请求书籍 uid = g.user.id data = request.json drift_id = data['drift_id'] mail = data['mail'] message = data['message'] # 我-->接受者 requester = Consumer.get_consumer(uid) if drift_id: drift = __set_of_drift_by_did(drift_id=drift_id, mail=mail, message=message) else: book = data['book'] # 对方-->赠送者 gift_id = data['gift_id'] gifter = Gift.query.get(gift_id) drift = Drift(book=book, requester=requester, gifter=gifter, mail=mail, message=message) # 鱼豆-1 requester.beans -= 1 drift.save_drift() return Success()
def send_drift(gid): gifter = Gift.owner(gid) if request.method == "POST": form = ReceiverForm(request.form) if form.validate(): gift = Gift.query.filter_by(id=gid).first() book = gift.book if current_user.can_send_drift(book['isbn']): with db.auto_commit(): current_user.beans -= 1 current_user.receive_counter += 1 drift = Drift() drift.save_drift(form, gift, book, gifter) db.session.add(drift) return redirect(url_for('web.pending')) else: flash('您的鱼豆不够!') else: flash('表单提交错误!') return render_template( 'drift.html', gifter=gifter, beans_ask_one_book=current_app.config["BEANS_ASK_ONE_BOOK"])
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
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.recipient_name = 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_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): 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
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) # 将drift_form 的字段赋值到drift drift.gift_id = current_gift.id drift.requester_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.brans -= 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_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)
# -*- coding: utf-8 -*- # @Time : 2018/4/22 下午5:03 # @Author : zhouyajun from app.libs.enums import PendingEnum from app.models.drift import Drift drift = Drift() class DriftViewModel: def __init__(self, drift, current_user_id): self.data = self._parse(drift, current_user_id) @staticmethod def requester_or_gifter(drift, current_user_id): global you_are if current_user_id == drift.request_id: you_are = 'requester' if current_user_id == drift.gifter_id: you_are = 'gifter' return you_are def _parse(self, drift, current_user_id): you_are = self.requester_or_gifter(drift, current_user_id) status_str = PendingEnum.pending_str(drift.status, you_are) r = { 'you_are': you_are, 'drift_id': drift.id, 'book_title':
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.taker_id = current_user.id drift.taker_nickname = current_user.nickname drift.giver_id = current_gift.user.id drift.giver_nickname = current_gift.user.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 -= 1 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_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)
def save_drift(drift_form, current_gift): with db.auto_commit(): drift= Drift() # wtforms提供了把表单数据复制到模型的方法,只要对应字段的名城都一致 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.uid 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_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.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里定义的字段相同,可使用下面的额方法一次把form里的数据导入到数据库 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_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_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() # 如果字段都一样,可以按下面这样赋值 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)