PDMI/manage.py
2019-04-29 22:33:38 +02:00

52 lines
1.7 KiB
Python

from flask import url_for
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from PDMI import server, db, Roles, Users
server.config.from_object('PDMI.config')
migrate = Migrate(server, db)
manager = Manager(server)
manager.add_command('db', MigrateCommand)
@manager.option('-m', '--mail', help="Mail de l'utilisateur à mettre en admin")
def set_superadmin(mail):
roles = Roles.query.filter(Roles.name == "superadmin").all()
if len(roles) == 0:
superAdminRole = Roles(name="superadmin", description="Role pour les super administrateurs")
db.session.add(superAdminRole)
db.session.commit()
role = Roles.query.filter(Roles.name == "superadmin").first()
users = Users.query.filter(Users.email == mail).all()
if len(users) == 0:
print("Aucun compte avec le mail {mail} existe, annulation".format(mail=mail))
return
user = Users.query.filter(Users.email == mail).first()
user.roles.append(role)
db.session.commit()
print("Role ajouté")
@manager.command
def list_routes():
import urllib.parse
output = []
for rule in server.url_map.iter_rules():
options = {}
for arg in rule.arguments:
if arg == "id":
options[arg] = "0"
else:
options[arg] = f"[{arg}]"
methods = ",".join(rule.methods)
url = url_for(rule.endpoint, **options)
line = urllib.parse.unquote("{:50s} {:20s} {}".format(rule.endpoint, methods, url))
output.append(line)
for line in sorted(output):
print(line)
if __name__ == '__main__':
manager.run()