]> git.lizzy.rs Git - cheatdb.git/blob - app/views/admin.py
Add screenshot importing from github
[cheatdb.git] / app / views / admin.py
1 from flask import *
2 from flask_user import *
3 from flask.ext import menu
4 from app import app
5 from app.models import *
6 from app.tasks.forumtasks import importUsersFromModList
7 from flask_wtf import FlaskForm
8 from wtforms import *
9 from app.utils import loginUser, rank_required
10
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)
15 def admin_page():
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")))
21                 else:
22                         flash("Unknown action: " + action, "error")
23
24         return render_template("admin/list.html")
25
26 class SwitchUserForm(FlaskForm):
27         username = StringField("Username")
28         submit = SubmitField("Switch")
29
30
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()
37                 if user is None:
38                         flash("Unable to find user", "error")
39                 elif loginUser(user):
40                         return redirect(url_for("user_profile_page", username=current_user.username))
41                 else:
42                         flash("Unable to login as user", "error")
43
44
45         # Process GET or invalid POST
46         return render_template("admin/switch_user_page.html", form=form)