-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
90 lines (70 loc) · 2.2 KB
/
Copy pathmain.py
File metadata and controls
90 lines (70 loc) · 2.2 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
import os
import unittest
import csv
import requests
import datetime
from dotenv import load_dotenv
from logging import debug
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from api import blueprint
from api.main import create_app, db
from api.main.utils.encryption import hash_salt
from api.main.models.user_model import User
from api.main.models.stock_models import StockSymbols
port = os.getenv("PORT") or 5001
api = create_app(os.getenv("ENV") or "dev")
api.register_blueprint(blueprint)
api.app_context().push()
manager = Manager(api)
migrate = Migrate(api, db)
manager.add_command("db", MigrateCommand)
@manager.command
def run():
api.run(port=port)
@manager.command
def docker_run():
api.run(debug=False, host="0.0.0.0", port=port)
@manager.command
def test():
"""Runs the unit tests."""
load_dotenv()
tests = unittest.TestLoader().discover("api/test", pattern="test*.py")
result = unittest.TextTestRunner(verbosity=2).run(tests)
if result.wasSuccessful():
return 0
return 1
@manager.command
def seed_user():
"""Runs Initial Data load from provider"""
db.session.add(
User(
user="test@mail.com",
password=hash_salt("Testing1"),
otp_active=False,
active=True,
created_at=datetime.datetime.utcnow(),
updated_at=datetime.datetime.utcnow(),
)
)
db.session.commit()
print("== SEED USER MIGRATED ==")
@manager.command
def symbols_alpha():
"""Runs Initial Data load from provider"""
SYMBOLS_URL = os.getenv("SYMBOLS_URL") or ""
SYMBOLS_PROVIDER = os.getenv("SYMBOLS_PROVIDER") or ""
SYMBOLS_URL += "query?function=LISTING_STATUS&apikey=demo"
with requests.Session() as session:
tmp = session.get(SYMBOLS_URL)
tmp_decoded = tmp.content.decode("UTF-8")
symbols = list(csv.reader(tmp_decoded.splitlines(), delimiter=","))
symbols.pop(0)
[
db.session.add(StockSymbols.from_provider(SYMBOLS_PROVIDER, symbol))
for symbol in symbols
]
db.session.commit()
print("== ALPHA VANTAGE SYMBOLS MIGRATED ==")
if __name__ == "__main__":
manager.run()