Exemple #1
0
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"))
Exemple #2
0
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"))
Exemple #3
0
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"))
Exemple #4
0
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))
Exemple #5
0
 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
Exemple #6
0
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"))
Exemple #7
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 = 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