2 from flask_user import *
3 from flask.ext import menu
5 from app.models import *
6 from app.tasks.forumtasks import importUsersFromModList
7 from flask_wtf import FlaskForm
9 from app.utils import loginUser, rank_required
11 @menu.register_menu(app, ".admin", "Admin", order=30,
12 visible_when=lambda: current_user.rank.atLeast(UserRank.ADMIN))
13 @app.route("/admin/", methods=["GET", "POST"])
14 @rank_required(UserRank.ADMIN)
16 if request.method == "POST":
17 action = request.form["action"]
18 if action == "importusers":
19 task = importUsersFromModList.delay()
20 return redirect(url_for("check_task", id=task.id, r=url_for("user_list_page")))
22 flash("Unknown action: " + action, "error")
24 return render_template("admin/list.html")
26 class SwitchUserForm(FlaskForm):
27 username = StringField("Username")
28 submit = SubmitField("Switch")
31 @app.route("/admin/switchuser/", methods=["GET", "POST"])
32 @rank_required(UserRank.ADMIN)
33 def switch_user_page():
34 form = SwitchUserForm(formdata=request.form)
35 if request.method == "POST" and form.validate():
36 user = User.query.filter_by(username=form["username"].data).first()
38 flash("Unable to find user", "error")
40 return redirect(url_for("user_profile_page", username=current_user.username))
42 flash("Unable to login as user", "error")
45 # Process GET or invalid POST
46 return render_template("admin/switch_user_page.html", form=form)