import json
import os
import os.path
import base64
from flask import Flask
from flask_bootstrap import Bootstrap
config_file = os.path.abspath('config.json')
bootstrap = Bootstrap()
def create_app():
app = Flask(__name__)
_default_secret_key = base64.b64encode(os.urandom(32)).decode('utf-8')
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY',
_default_secret_key)
if not hasattr(app.config, 'from_json'):
def from_json(file, silent=True):
try:
with open(file, encoding='utf-8') as json_file:
obj = json.load(json_file)
except IOError:
if silent:
return False
raise
for key in obj:
if key.isupper():
app.config[key] = obj[key]
return True
app.config.from_json = from_json
app.config.from_json(config_file, silent=True)
app.config.setdefault('BOOTSTRAP_SERVE_LOCAL', True)
bootstrap.init_app(app)
@app.after_request
def add_headers(response):
response.headers.setdefault('Access-Control-Allow-Origin', '*')
response.headers.setdefault('Cache-Control', 'no-cache')
return response
from .views import root_views
app.register_blueprint(root_views)
from .state import state_views
app.register_blueprint(state_views, url_prefix='/state')
from .sensors import sensors_views
app.register_blueprint(sensors_views, url_prefix='/sensors')
from .active import reload_json
reload_json()
return app