forked from mgerst/pyquiz
/
manage.py
executable file
·57 lines (40 loc) · 1.54 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
#!/usr/bin/env python
import os
import subprocess
import redis
from flask_script import Manager, Server
from flask_script.commands import ShowUrls, Clean
from jeopardy import create_app
# default to dev config because no one should use this in
# production anyway
from jeopardy.models import BoardManager
env = os.environ.get('JEOPARDY_ENV', 'dev')
app = create_app('jeopardy.settings.%sConfig' % env.capitalize())
manager = Manager(app)
manager.add_command("show-urls", ShowUrls())
manager.add_command("clean", Clean())
@manager.option('-b', '--boards', dest='boards', default='board.yml')
@manager.option('--skip-npm', dest='skip_npm', action='store_true', default=False)
def run_server(boards, skip_npm):
bm = app.config.get('BOARD_MANAGER')
bm.load_board(boards)
bm.init_boards()
if not skip_npm:
subprocess.call(['npm', 'run', 'build'])
from jeopardy.extensions import socketio
socketio.run(app, host='0.0.0.0')
@manager.command
def lint():
subprocess.call(["flake8", "jeopardy"])
@manager.command
def test():
subprocess.call(["py.test"])
@manager.command
def clear_redis():
r = redis.StrictRedis(host='localhost', db=2)
# Redis doesn't support wildcard deletes apparently.
# https://stackoverflow.com/questions/4006324/how-to-atomically-delete-keys-matching-a-pattern-using-redis
r.eval("return redis.call('del', unpack(redis.call('keys', ARGV[1])))", 0, "quiz:*")
r.eval("return redis.call('del', unpack(redis.call('keys', ARGV[1])))", 0, "session:*")
if __name__ == "__main__":
manager.run()