Skip to content

Commit a84c3e2

Browse files
committed
Move CLI logic into redash.cli and uses manager for tests.
Otherwise the Flask wasn't created and tests were failing.
1 parent b9024b1 commit a84c3e2

File tree

3 files changed

+119
-129
lines changed

3 files changed

+119
-129
lines changed

manage.py

+1-68
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,8 @@
22
"""
33
CLI to manage redash.
44
"""
5-
import json
6-
7-
8-
import click
9-
from flask.cli import FlaskGroup, run_command
10-
11-
from redash import create_app, settings, __version__
12-
from redash.cli import users, groups, database, data_sources, organization
13-
from redash.monitor import get_status
14-
15-
16-
def create(group):
17-
app = create_app()
18-
group.app = app
19-
return app
20-
21-
22-
@click.group(cls=FlaskGroup, create_app=create)
23-
def manager():
24-
"Management script for redash"
25-
26-
27-
manager.add_command(database.manager, "database")
28-
manager.add_command(users.manager, "users")
29-
manager.add_command(groups.manager, "groups")
30-
manager.add_command(data_sources.manager, "ds")
31-
manager.add_command(organization.manager, "org")
32-
manager.add_command(run_command, "runserver")
33-
34-
35-
@manager.command()
36-
def version():
37-
"""Displays re:dash version."""
38-
print __version__
39-
40-
41-
@manager.command()
42-
def status():
43-
print json.dumps(get_status(), indent=2)
44-
45-
46-
@manager.command()
47-
def runworkers():
48-
"""Start workers (deprecated)."""
49-
print "** This command is deprecated. Please use Celery's CLI to control the workers. **"
50-
51-
52-
@manager.command()
53-
def check_settings():
54-
"""Show the settings as re:dash sees them (useful for debugging)."""
55-
for name, item in settings.all_settings().iteritems():
56-
print "{} = {}".format(name, item)
57-
58-
59-
@manager.command()
60-
@click.argument('email', default=settings.MAIL_DEFAULT_SENDER, required=False)
61-
def send_test_mail(email=None):
62-
"""
63-
Send test message to EMAIL (default: the address you defined in MAIL_DEFAULT_SENDER)
64-
"""
65-
from redash import mail
66-
from flask_mail import Message
67-
68-
if email is None:
69-
email = settings.MAIL_DEFAULT_SENDER
70-
71-
mail.send(Message(subject="Test Message from re:dash", recipients=[email],
72-
body="Test message."))
735

6+
from redash.cli import manager
747

758
if __name__ == '__main__':
769
manager()

redash/cli/__init__.py

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import json
2+
3+
4+
import click
5+
from flask.cli import FlaskGroup, run_command
6+
7+
from redash import create_app, settings, __version__
8+
from redash.cli import users, groups, database, data_sources, organization
9+
from redash.monitor import get_status
10+
11+
12+
def create(group):
13+
app = create_app()
14+
group.app = app
15+
return app
16+
17+
18+
@click.group(cls=FlaskGroup, create_app=create)
19+
def manager():
20+
"""Management script for Redash"""
21+
22+
23+
manager.add_command(database.manager, "database")
24+
manager.add_command(users.manager, "users")
25+
manager.add_command(groups.manager, "groups")
26+
manager.add_command(data_sources.manager, "ds")
27+
manager.add_command(organization.manager, "org")
28+
manager.add_command(run_command, "runserver")
29+
30+
31+
@manager.command()
32+
def version():
33+
"""Displays Redash version."""
34+
print __version__
35+
36+
37+
@manager.command()
38+
def status():
39+
print json.dumps(get_status(), indent=2)
40+
41+
42+
@manager.command()
43+
def check_settings():
44+
"""Show the settings as Redash sees them (useful for debugging)."""
45+
for name, item in settings.all_settings().iteritems():
46+
print "{} = {}".format(name, item)
47+
48+
49+
@manager.command()
50+
@click.argument('email', default=settings.MAIL_DEFAULT_SENDER, required=False)
51+
def send_test_mail(email=None):
52+
"""
53+
Send test message to EMAIL (default: the address you defined in MAIL_DEFAULT_SENDER)
54+
"""
55+
from redash import mail
56+
from flask_mail import Message
57+
58+
if email is None:
59+
email = settings.MAIL_DEFAULT_SENDER
60+
61+
mail.send(Message(subject="Test Message from Redash", recipients=[email],
62+
body="Test message."))
63+

0 commit comments

Comments
 (0)