Coverage for api/database.py : 0%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import importlib
2import os
4import click
6from shopyo.api.constants import SEP_CHAR
7from shopyo.api.constants import SEP_NUM
10def autoload_models(verbose=False):
11 """
12 Auto imports models from modules/ in desired file. Used so that
13 flask_migrate does not miss models when migrating
15 Returns
16 -------
17 None
18 """
19 click.echo("Auto importing models...")
20 click.echo(SEP_CHAR * SEP_NUM)
22 for folder in os.listdir("modules"):
23 if folder.startswith("__"):
24 continue
25 elif folder.startswith("box__"):
26 for sub_folder in os.listdir(os.path.join("modules", folder)):
27 if sub_folder.startswith("__"): # ignore __pycache__
28 continue
29 elif sub_folder.endswith(".json"): # box_info.json
30 continue
31 try:
32 to_load_submodel = f"modules.{folder}.{sub_folder}.models"
33 importlib.import_module(to_load_submodel)
34 if verbose:
35 click.echo(f"[x] imported {to_load_submodel}")
36 except Exception as e:
37 if verbose:
38 click.echo(f"[ ] {e}")
39 else:
40 try:
41 to_load = f"modules.{folder}.models"
42 importlib.import_module(to_load)
43 if verbose:
44 click.echo(f"[x] imported {to_load}")
45 except Exception as e:
46 if verbose:
47 click.echo(f"[ ] {e}")
49 click.echo("")