bitvend/bitvend/admin.py

53 lines
1.3 KiB
Python

from flask import Blueprint, render_template, redirect, request, flash, url_for
from flask_login import current_user, fresh_login_required
from bitvend import dev
from bitvend.models import db, Transaction
from bitvend.forms import ManualForm
from spaceauth import cap_required
admin_required = cap_required("staff")
bp = Blueprint("admin", __name__)
@bp.route("/manual", methods=["GET", "POST"])
@fresh_login_required
@admin_required
def manual():
form = ManualForm()
if form.validate_on_submit():
current_user.transactions.append(Transaction(amount=form.amount.data))
db.session.commit()
flash("Operation successful.", "success")
return render_template("admin/manual.html", form=form)
@bp.route("/transactions/", defaults={"page": 1})
@bp.route("/transactions/p/<int:page>")
@fresh_login_required
@admin_required
def transactions(page):
return render_template(
"admin/transactions.html", transactions=Transaction.query.paginate(page)
)
@bp.route("/begin")
@fresh_login_required
@admin_required
def begin():
dev.begin_session(500)
flash("Operation successful.", "success")
return redirect("/")
@bp.route("/cancel")
@fresh_login_required
@admin_required
def cancel():
dev.cancel_session()
flash("Operation successful.", "success")
return redirect("/")