forked from s-tar/PromTal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manage.py
78 lines (58 loc) · 1.83 KB
/
manage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# -*- coding: utf-8 -*-
from flask.ext.script import Manager, Shell
from flask.ext.migrate import Migrate, MigrateCommand
from application import db, create_app, celery
from application.models.user import Permission, Role, User
from celery.bin import worker
app = create_app('default')
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command("shell", Shell)
manager.add_command('db', MigrateCommand)
@manager.command
def runcelery():
celery_worker = worker.worker(app=celery)
options = {
'loglevel': 'INFO'
}
celery_worker.run(**options)
@manager.command
def sync_permissions():
for name, title in Permission.PERMISSIONS:
permission = Permission.query.filter_by(name=name).first()
if permission is None:
p = Permission()
p.name = name
p.title = title
db.session.add(p)
db.session.commit()
@manager.command
def set_default_role():
user_role = Role.query.filter_by(name='user').first()
for user in User.query:
if not user.roles.all():
user.roles.append(user_role)
db.session.add(user)
db.session.commit()
@manager.command
def insert_roles():
roles = {
'user': ['post_comment'],
'moderator': [
'post_comment',
'write_articles', 'manage_comments',
'manage_articles', 'manage_users',
]
}
permissions_map = {p.name: p for p in Permission.query}
for role, permissions in roles.items():
ur = Role.query.filter_by(name=role).first()
if ur is None:
r = Role()
for p in permissions:
r.permissions.append(permissions_map.get(p))
r.name = role
db.session.add(r)
db.session.commit()
if __name__ == '__main__':
manager.run()