def redraw_drift(did): with db.auto_commit(): drift = Drift.query.filter_by( id=did, requester_id=current_user.id).first_or_404() drift.pending = PendingStatus.Redraw current_user.beans += 1 return redirect(url_for("web.pending"))
def redraw_from_wish(): isbn = request.args.get("isbn") wish = Wish.query.filter(Wish.isbn == isbn, Wish.launched == False).first_or_404() with db.auto_commit(): wish.delete() return redirect(url_for("web.my_wish"))
def reject_drift(did): with db.auto_commit(): drift = Drift.query.filter(Gift.id == current_user.id, Drift.id == did).first_or_404() drift.pending = PendingStatus.Reject requester = User.query.get_or_404(drift.requester_id) requester.beans += 1 return redirect(url_for("web.pending"))
def save_to_wish(): isbn = request.args.get("isbn") if current_user.can_save_to_list(isbn): with db.auto_commit(): wish = Wish() wish.isbn = isbn wish.uid = current_user.id current_user.beans += current_app.config["BASE_NUM"] db.session.add(wish) db.session.commit() flash("添加成功") else: flash("这本书已经添加到赠送清单,或者已经添加到你的心愿清单,请勿重复添加!") return redirect(url_for("web.book_detail", isbn=isbn))
def cheage_password(token, password): """ 验证token,并且修改password :param token: :param password: :return: """ s = Serializer(current_app.config.get("SECRET_KEY")) try: data = s.loads(token.encode("utf-8")) except Exception as e: return False with db.auto_commit(): user = User.query.get(data.get("id")) if user is None: return False user.password = password
def mailed_drift(did): with db.auto_commit(): drift = Drift.query.filter(id=did, gifter_id=current_user.id).first_or_404() drift.pendin = PendingStatus.Success current_user.beans += 1 gift = Gift.query.filter(Gift.id == drift.gift_id, Gift.uid == current_user.id).first_or_404() gift.launched = True wish = Wish.query.filter(Wish.isbn == drift.isbn, Wish.uid == drift.requester_id, Wish.launched == False).get_or_404() wish.launched = True # Wish.query.filter_by( # isbn=drift.isbn, uid=drift.requester_id, launched=False # ).update({Wish.launched: True}) return redirect(url_for("web.pending"))
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 = BookViewsModel(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