Newer
Older
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
from models import *
from flask_migrate import Migrate
# ========== ACTION handlers ==========
CREATE_ALL_ACTION_NAME = "create-all"
def create_all_action_handler(flask_app, db, bind_name, con_str):
db.create_all(bind=bind_name)
# ========== End ACTION handlers. ==========
# CLI Argument Names
DB_BINGING_CLI_ARG_NAME = "binding"
ACTION_CLI_ARG_NAME = "action"
def handle_action(action, selected_binding, flask_app, db_to_perform_action_on, db_con_str):
if action == CREATE_ALL_ACTION_NAME:
create_all_action_handler(flask_app, db_to_perform_action_on, selected_binding, db_con_str)
else:
print("No handler for action:", action)
print("Completed action:", action)
APP_CONFIG_BINDINGS_DICT_KEY = "SQLALCHEMY_BINDS"
def handle_cli(flask_app, lookup_db_for_binding, args):
print("\n\n===== Flask App CLI =====")
print(args)
# PRE: args is a list of strings like: [db_name=John, action=migrate]
selected_binding = None
selected_action = None
for arg in args:
argname_argvalue_pair = arg.split("=")
arg_name = argname_argvalue_pair[0]
arg_value = argname_argvalue_pair[1]
if arg_name == DB_BINGING_CLI_ARG_NAME:
selected_binding = arg_value
elif arg_name == ACTION_CLI_ARG_NAME:
selected_action = arg_value
else:
print("Invalid argument supplied:", arg_name)
bindings_dict = flask_app.config[APP_CONFIG_BINDINGS_DICT_KEY]
handle_action(selected_action, selected_binding, flask_app, lookup_db_for_binding(selected_binding),
bindings_dict[selected_binding])