|
|
@ -8,47 +8,20 @@ from app.models.privs import SpecialPrivilege |
|
|
|
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') |
|
|
|
|
|
|
|
# Default groups and privileges. |
|
|
|
default_groups = [ |
|
|
|
('Administrateur', 'color: #ee0000', |
|
|
|
"Vous voyez Chuck Norris ? Pareil."), |
|
|
|
('Modérateur', 'color: green', |
|
|
|
"Maîtres du kick, ils sont là pour faire respecter un semblant " + |
|
|
|
"d'ordre."), |
|
|
|
('Développeur', 'color: #4169e1', |
|
|
|
"Les développeurs maintiennent et améliorent le code du site."), |
|
|
|
('Rédacteur', 'color: blue', |
|
|
|
"Rédigent les meilleurs articles de la page d'accueil, rien " + |
|
|
|
"que pour vous <3"), |
|
|
|
('Responsable communauté', 'color: DarkOrange', |
|
|
|
"Anime les pages Twitter et Facebook de Planète Casio et " + |
|
|
|
"surveille l'évolution du monde autour de nous !"), |
|
|
|
('Partenaire', 'color: purple', |
|
|
|
"Membres de l'équipe d'administration des sites partenaires."), |
|
|
|
('Compte communautaire', 'background: #d8d8d8; border-radius: ' + |
|
|
|
'4px; color:#303030; padding: 1px 2px', |
|
|
|
"Compte à usage général de l'équipe de Planète Casio."), |
|
|
|
|
|
|
|
('Robot', 'color: #cf25d0', |
|
|
|
"♫ Je suis Nono, le petit robot, l'ami d'Ulysse ♫", |
|
|
|
"shoutbox-kick shoutbox-ban".split()), |
|
|
|
|
|
|
|
('Membre de CreativeCalc', 'color: #222222', |
|
|
|
"CreativeCalc est l'association qui gère Planète Casio.", |
|
|
|
"access-assoc-board".split()), |
|
|
|
] |
|
|
|
|
|
|
|
@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') |
|
|
|
submit = SubmitField( |
|
|
|
'Régénérer les groupes, privilèges, et comptes communs') |
|
|
|
|
|
|
|
form = GroupRegenerationForm() |
|
|
|
if form.validate_on_submit(): |
|
|
@ -57,16 +30,18 @@ def adm_groups(): |
|
|
|
g.delete() |
|
|
|
|
|
|
|
# Create base groups |
|
|
|
groups = [ Group(g[0], g[1], g[2]) for g in default_groups ] |
|
|
|
groups = [] |
|
|
|
with open(os.path.join(app.root_path, "data", "groups.yaml")) as fp: |
|
|
|
groups = yaml.load(fp.read()) |
|
|
|
|
|
|
|
for g in groups: |
|
|
|
db.session.add(g) |
|
|
|
g["obj"] = Group(g["name"], g["css"], g["descr"]) |
|
|
|
db.session.add(g["obj"]) |
|
|
|
db.session.commit() |
|
|
|
|
|
|
|
for g, dg in zip(groups, default_groups): |
|
|
|
if len(dg) < 4: |
|
|
|
continue |
|
|
|
for priv in dg[3]: |
|
|
|
db.session.add(GroupPrivilege(g, priv)) |
|
|
|
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 |
|
|
@ -98,7 +73,8 @@ def adm_groups(): |
|
|
|
|
|
|
|
users = Member.query.all() |
|
|
|
groups = Group.query.all() |
|
|
|
return render('admin/groups_privileges.html', users=users, groups=groups, form=form) |
|
|
|
return render('admin/groups_privileges.html', users=users, groups=groups, |
|
|
|
form=form) |
|
|
|
|
|
|
|
@app.route('/admin/edit-account/<user_id>', methods=['GET', 'POST']) |
|
|
|
@priv_required('edit-account') |
|
|
|