aboutsummaryrefslogtreecommitdiff
path: root/qc_app/__init__.py
blob: eefe236727002c3a351ad3c0284643f1afea8234 (plain)
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
"""The Quality-Control Web Application entry point"""

import os

from flask import Flask

from .entry import entrybp
from .parse import parsebp
from .dbinsert import dbinsertbp
from .check_connections import check_db, check_redis

def instance_path():
    """Retrieve the `instance_path`. Raise an exception if not defined."""
    path = os.getenv("QCAPP_INSTANCE_PATH", None)
    if path is None:
        raise Exception((
            "Configuration Error: Set the `QCAPP_INSTANCE_PATH` environment "
            "variable."))

    return path

def create_app(instance_dir):
    """The application factory"""
    app = Flask(
        __name__, instance_path=instance_dir, instance_relative_config=True)
    app.config.from_pyfile(os.path.join(os.getcwd(), "etc/default_config.py"))
    app.config.from_pyfile("config.py") # Override defaults with instance path

    # Check the connection
    check_db(app.config["SQL_URI"])
    check_redis(app.config["REDIS_URL"])

    # setup blueprints
    app.register_blueprint(entrybp, url_prefix="/")
    app.register_blueprint(parsebp, url_prefix="/parse")
    app.register_blueprint(dbinsertbp, url_prefix="/dbinsert")
    return app