From de2c1e8c63c70eb5309ea3746471447b72b1c848 Mon Sep 17 00:00:00 2001 From: Darks Date: Thu, 6 Jun 2019 01:45:39 +0200 Subject: [PATCH] Put admin routes into a folder --- .../{admin.py => admin/edit-account.py} | 76 +------------------ app/routes/admin/groups.py | 72 ++++++++++++++++++ app/routes/admin/index.py | 9 +++ 3 files changed, 82 insertions(+), 75 deletions(-) rename app/routes/{admin.py => admin/edit-account.py} (53%) create mode 100644 app/routes/admin/groups.py create mode 100644 app/routes/admin/index.py diff --git a/app/routes/admin.py b/app/routes/admin/edit-account.py similarity index 53% rename from app/routes/admin.py rename to app/routes/admin/edit-account.py index 69af2fb..4311686 100644 --- a/app/routes/admin.py +++ b/app/routes/admin/edit-account.py @@ -1,83 +1,9 @@ from flask import request, flash, redirect, url_for from app.utils.priv_required import priv_required -from flask_wtf import FlaskForm -from wtforms import SubmitField -from app.models.users import Member, Group, GroupPrivilege -from app.models.privs import SpecialPrivilege +from app.models.users import Member from app.forms.account import AdminUpdateAccountForm, AdminDeleteAccountForm from app.utils.render import render from app import app, db -import yaml -import os - - -@app.route('/admin', methods=['GET', 'POST']) -@priv_required('access-admin-panel') -def adm(): - return render('admin/index.html') - - -@app.route('/admin/groups', methods=['GET', 'POST']) -@priv_required('access-admin-panel') -def adm_groups(): - class GroupRegenerationForm(FlaskForm): - submit = SubmitField( - 'Régénérer les groupes, privilèges, et comptes communs') - - form = GroupRegenerationForm() - if form.validate_on_submit(): - # Clean up groups - for g in Group.query.all(): - g.delete() - - # Create base groups - groups = [] - with open(os.path.join(app.root_path, "data", "groups.yaml")) as fp: - groups = yaml.load(fp.read()) - - for g in groups: - g["obj"] = Group(g["name"], g["css"], g["descr"]) - db.session.add(g["obj"]) - db.session.commit() - - for g in groups: - for priv in g.get("privs", "").split(): - db.session.add(GroupPrivilege(g["obj"], priv)) - db.session.commit() - - # Clean up test members - for name in "PlanèteCasio GLaDOS".split(): - m = Member.query.filter_by(name=name).first() - if m is not None: - m.delete() - - # Create template members - - def addgroup(member, group): - g = Group.query.filter_by(name=group).first() - if g is not None: - member.groups.append(g) - - m = Member('PlanèteCasio', 'contact@planet-casio.com', 'v5-forever') - addgroup(m, "Compte communautaire") - db.session.add(m) - - m = Member('GLaDOS', 'glados@aperture.science', 'v5-forever') - m.xp = 1337 - addgroup(m, "Robot") - db.session.add(m) - db.session.commit() - - db.session.add(SpecialPrivilege(m, "edit-posts")) - db.session.add(SpecialPrivilege(m, "shoutbox-ban")) - - db.session.commit() - - users = Member.query.all() - groups = Group.query.all() - - return render('admin/groups_privileges.html', users=users, groups=groups, - form=form) @app.route('/admin/edit-account/', methods=['GET', 'POST']) diff --git a/app/routes/admin/groups.py b/app/routes/admin/groups.py new file mode 100644 index 0000000..3c63894 --- /dev/null +++ b/app/routes/admin/groups.py @@ -0,0 +1,72 @@ +from app.utils.priv_required import priv_required +from flask_wtf import FlaskForm +from wtforms import SubmitField +from app.models.users import Member, Group, GroupPrivilege +from app.models.privs import SpecialPrivilege +from app.utils.render import render +from app import app, db +import yaml +import os + + +@app.route('/admin/groups', methods=['GET', 'POST']) +@priv_required('access-admin-panel') +def adm_groups(): + class GroupRegenerationForm(FlaskForm): + submit = SubmitField( + 'Régénérer les groupes, privilèges, et comptes communs') + + form = GroupRegenerationForm() + if form.validate_on_submit(): + # Clean up groups + for g in Group.query.all(): + g.delete() + + # Create base groups + groups = [] + with open(os.path.join(app.root_path, "data", "groups.yaml")) as fp: + groups = yaml.load(fp.read()) + + for g in groups: + g["obj"] = Group(g["name"], g["css"], g["descr"]) + db.session.add(g["obj"]) + db.session.commit() + + for g in groups: + for priv in g.get("privs", "").split(): + db.session.add(GroupPrivilege(g["obj"], priv)) + db.session.commit() + + # Clean up test members + for name in "PlanèteCasio GLaDOS".split(): + m = Member.query.filter_by(name=name).first() + if m is not None: + m.delete() + + # Create template members + + def addgroup(member, group): + g = Group.query.filter_by(name=group).first() + if g is not None: + member.groups.append(g) + + m = Member('PlanèteCasio', 'contact@planet-casio.com', 'v5-forever') + addgroup(m, "Compte communautaire") + db.session.add(m) + + m = Member('GLaDOS', 'glados@aperture.science', 'v5-forever') + m.xp = 1337 + addgroup(m, "Robot") + db.session.add(m) + db.session.commit() + + db.session.add(SpecialPrivilege(m, "edit-posts")) + db.session.add(SpecialPrivilege(m, "shoutbox-ban")) + + db.session.commit() + + users = Member.query.all() + groups = Group.query.all() + + return render('admin/groups_privileges.html', users=users, groups=groups, + form=form) diff --git a/app/routes/admin/index.py b/app/routes/admin/index.py new file mode 100644 index 0000000..5ef458e --- /dev/null +++ b/app/routes/admin/index.py @@ -0,0 +1,9 @@ +from app.utils.priv_required import priv_required +from app.utils.render import render +from app import app + + +@app.route('/admin', methods=['GET', 'POST']) +@priv_required('access-admin-panel') +def adm(): + return render('admin/index.html')