forked from GovLab/noi2
/
manage.py
77 lines (60 loc) · 1.86 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
'''
NoI manage.py
Scripts to run the server and perform maintenance operations
'''
from app import mail, models
from app.factory import create_app
from app.models import db, User, UserSkill
from flask_migrate import Migrate
from flask_script import Manager
from flask_security.utils import encrypt_password
import json
import subprocess
app = create_app() #pylint: disable=invalid-name
migrate = Migrate(app, db) #pylint: disable=invalid-name
manager = Manager(app) #pylint: disable=invalid-name
#manager.add_command('db', MigrateCommand)
#manager.add_command("assets", ManageAssets)
@manager.shell
def _make_context():
'''
Add certain variables to context for shell
'''
return dict(app=app, db=db, mail=mail, models=models)
@manager.command
def translate():
"""
Extract translation
"""
subprocess.check_call('pybabel extract -F app/babel.cfg -k lazy_gettext -o app/messages.pot app/',
shell=True)
return 0
@manager.command
@manager.option('-v', '--verbose', dest='verbose', default=False)
def drop_and_create_db(verbose=False):
"""
Drops database and creates a new one
"""
if not verbose:
db.engine.echo = False
db.reflect()
db.drop_all()
db.create_all()
return 0
@manager.command
def populate_db():
"""
Populate DB from fixture data
"""
fixture_data = json.load(open('/noi/fixtures/sample_users.json', 'r'))
for i, user_data in enumerate(fixture_data):
skills = user_data.pop('skills')
user = User(password=encrypt_password('foobar'), active=True, **user_data)
for name, level in skills.iteritems():
db.session.add(UserSkill(user_id=i+1, name=name, level=level))
db.session.add(user)
db.session.commit()
return 0
if __name__ == '__main__':
subprocess.call('../symlink-hooks.sh', shell=True)
manager.run()