59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
from flask_login import login_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.utils.priv_required import priv_required
|
|
from app import app, db
|
|
|
|
@app.route('/admin', methods=['GET', 'POST'])
|
|
@priv_required('panel-admin')
|
|
def admin():
|
|
class AdminForm(FlaskForm):
|
|
submit = SubmitField('Régénérer les groupes, les privilèges, et les ' +
|
|
'membres de test "PlanèteCasio" et "GLaDOS" (mdp "v5-forever")')
|
|
|
|
form = AdminForm()
|
|
if form.validate_on_submit():
|
|
# Clean up groups
|
|
for g in Group.query.all():
|
|
db.session.delete(g)
|
|
db.session.commit( )
|
|
|
|
# Create base groups
|
|
g_admins = Group('Administrateur', 'color: red')
|
|
g_modos = Group('Modérateur', 'color: green')
|
|
g_redacs = Group('Rédacteur', 'color: blue')
|
|
g_community = Group('Compte communautaire', 'background: #c8c8c8;' +
|
|
'border-radius: 4px; color: #303030; padding: 1px 2px')
|
|
db.session.add(g_admins)
|
|
db.session.add(g_modos)
|
|
db.session.add(g_redacs)
|
|
db.session.add(g_community)
|
|
|
|
# Clean up test members
|
|
for name in "PlanèteCasio GLaDOS".split():
|
|
m = Member.query.filter_by(name=name).first()
|
|
if m is not None:
|
|
db.session.delete(m)
|
|
db.session.commit()
|
|
|
|
# Create template members
|
|
m = Member('PlanèteCasio','contact@planet-casio.com','v5-forever')
|
|
m.groups.append(g_community)
|
|
db.session.add(m)
|
|
|
|
m = Member('GLaDOS', 'glados@aperture.science', 'v5-forever')
|
|
m.groups.append(g_modos)
|
|
m.groups.append(g_redacs)
|
|
db.session.add(m)
|
|
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.html', users=users, groups=groups, form=form)
|