Flask setup

This commit is contained in:
richard-dds
2018-08-01 10:51:14 -04:00
parent 1a6d42f385
commit 6a5d3d57cf
8 changed files with 318 additions and 223 deletions

View File

@@ -1,160 +1,166 @@
import os
from configparser import ConfigParser
import tornado.web
from tornado.web import url
from redis import StrictRedis
from flask import Flask
from unipath import Path
from atst.handlers.main import Main
from atst.handlers.root import Root
from atst.handlers.login_redirect import LoginRedirect
from atst.handlers.workspaces import Workspaces
from atst.handlers.workspace import Workspace
from atst.handlers.workspace_members import WorkspaceMembers
from atst.handlers.request import Request
from atst.handlers.request_financial_verification import RequestFinancialVerification
from atst.handlers.request_new import RequestNew
from atst.handlers.request_submit import RequestsSubmit
from atst.handlers.dev import Dev
from atst.home import home
from atst.api_client import ApiClient
from atst.sessions import RedisSessions
from atst import ui_modules
from atst import ui_methods
from atst.database import make_db
from atst.database import db
from atst.assets import assets
from atst.routes import bp
ENV = os.getenv("TORNADO_ENV", "dev")
def make_app(config, deps, **kwargs):
def make_app(config):
routes = [
url(r"/", Root, {"page": "root"}, name="root"),
url(
r"/login-redirect",
LoginRedirect,
{
"sessions": deps["sessions"],
"authnid_client": deps["authnid_client"],
"db_session": deps["db_session"],
},
name="login_redirect",
),
url(r"/home", Main, {"page": "home"}, name="home"),
url(r"/styleguide", Main, {"page": "styleguide"}, name="styleguide"),
url(
r"/workspaces/blank",
Main,
{"page": "workspaces_blank"},
name="workspaces_blank",
),
url(
r"/workspaces",
Workspaces,
{"page": "workspaces", "db_session": deps["db_session"]},
name="workspaces",
),
url(
r"/requests",
Request,
{"page": "requests", "db_session": deps["db_session"]},
name="requests",
),
url(
r"/requests/new",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_new",
),
url(
r"/requests/new/([0-9])",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_form_new",
),
url(
r"/requests/new/([0-9])/(\S+)",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_form_update",
),
url(
r"/requests/submit/(\S+)",
RequestsSubmit,
{"db_session": deps["db_session"]},
name="requests_submit",
),
# Dummy request/approval screen
url(
r"/request/approval",
Main,
{"page": "request_approval"},
name="request_approval",
),
url(
r"/requests/verify/(\S+)",
RequestFinancialVerification,
{
"page": "financial_verification",
"db_session": deps["db_session"],
},
name="financial_verification",
),
url(
r"/requests/financial_verification_submitted",
Main,
{"page": "requests/financial_verification_submitted"},
name="financial_verification_submitted",
),
url(r"/users", Main, {"page": "users"}, name="users"),
url(r"/reports", Main, {"page": "reports"}, name="reports"),
url(r"/calculator", Main, {"page": "calculator"}, name="calculator"),
url(
r"/workspaces/(\S+)/members", WorkspaceMembers, {}, name="workspace_members"
),
url(r"/workspaces/(\S+)/projects", Workspace, {}, name="workspace_projects"),
url(r"/workspaces/123456/projects/789/edit", Main, {"page": "project_edit"}, name="project_edit"),
url(r"/workspaces/123456/members/789/edit", Main, {"page": "member_edit"}, name="member_edit"),
]
parent_dir = Path().parent
if not ENV == "production":
routes += [
url(
r"/login-dev",
Dev,
{
"action": "login",
"sessions": deps["sessions"],
"db_session": deps["db_session"],
},
name="dev-login",
)
]
app = tornado.web.Application(
routes,
login_url="/",
template_path=home.child("templates"),
static_path=home.child("static"),
cookie_secret=config["default"]["COOKIE_SECRET"],
debug=config["default"].getboolean("DEBUG"),
ui_modules=ui_modules,
ui_methods=ui_methods,
**kwargs
app = Flask(
__name__,
template_folder=parent_dir.child("templates").absolute(),
static_folder=parent_dir.child("static").absolute()
)
app.config = config
app.sessions = deps["sessions"]
app.config.update(config)
db.init_app(app)
assets.init_app(app)
app.register_blueprint(bp)
return app
# def make_app(config, deps, **kwargs):
# routes = [
# url(r"/", Root, {"page": "root"}, name="root"),
# url(
# r"/login-redirect",
# LoginRedirect,
# {
# "sessions": deps["sessions"],
# "authnid_client": deps["authnid_client"],
# "db_session": deps["db_session"],
# },
# name="login_redirect",
# ),
# url(r"/home", Main, {"page": "home"}, name="home"),
# url(r"/styleguide", Main, {"page": "styleguide"}, name="styleguide"),
# url(
# r"/workspaces/blank",
# Main,
# {"page": "workspaces_blank"},
# name="workspaces_blank",
# ),
# url(
# r"/workspaces",
# Workspaces,
# {"page": "workspaces", "db_session": deps["db_session"]},
# name="workspaces",
# ),
# url(
# r"/requests",
# Request,
# {"page": "requests", "db_session": deps["db_session"]},
# name="requests",
# ),
# url(
# r"/requests/new",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_new",
# ),
# url(
# r"/requests/new/([0-9])",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_form_new",
# ),
# url(
# r"/requests/new/([0-9])/(\S+)",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_form_update",
# ),
# url(
# r"/requests/submit/(\S+)",
# RequestsSubmit,
# {"db_session": deps["db_session"]},
# name="requests_submit",
# ),
# # Dummy request/approval screen
# url(
# r"/request/approval",
# Main,
# {"page": "request_approval"},
# name="request_approval",
# ),
# url(
# r"/requests/verify/(\S+)",
# RequestFinancialVerification,
# {
# "page": "financial_verification",
# "db_session": deps["db_session"],
# },
# name="financial_verification",
# ),
# url(
# r"/requests/financial_verification_submitted",
# Main,
# {"page": "requests/financial_verification_submitted"},
# name="financial_verification_submitted",
# ),
# url(r"/users", Main, {"page": "users"}, name="users"),
# url(r"/reports", Main, {"page": "reports"}, name="reports"),
# url(r"/calculator", Main, {"page": "calculator"}, name="calculator"),
# url(
# r"/workspaces/(\S+)/members", WorkspaceMembers, {}, name="workspace_members"
# ),
# url(r"/workspaces/(\S+)/projects", Workspace, {}, name="workspace_projects"),
# url(r"/workspaces/123456/projects/789/edit", Main, {"page": "project_edit"}, name="project_edit"),
# url(r"/workspaces/123456/members/789/edit", Main, {"page": "member_edit"}, name="member_edit"),
# ]
# if not ENV == "production":
# routes += [
# url(
# r"/login-dev",
# Dev,
# {
# "action": "login",
# "sessions": deps["sessions"],
# "db_session": deps["db_session"],
# },
# name="dev-login",
# )
# ]
# app = tornado.web.Application(
# routes,
# login_url="/",
# template_path=home.child("templates"),
# static_path=home.child("static"),
# cookie_secret=config["default"]["COOKIE_SECRET"],
# debug=config["default"].getboolean("DEBUG"),
# ui_modules=ui_modules,
# ui_methods=ui_methods,
# **kwargs
# )
# app.config = config
# app.sessions = deps["sessions"]
# return app
def make_deps(config):
# we do not want to do SSL verify services in test and development
validate_cert = ENV == "production"
@@ -206,4 +212,4 @@ def make_config():
)
config.set("default", "DATABASE_URI", database_uri)
return config
return config["default"]