blob: 61d4012760fee3fd68b8b81ca3ede6e188564675 [file] [log] [blame]
import os
import flask
import database
import trace
import views
class LLBuildApp(flask.Flask):
def __init__(self, name):
super(LLBuildApp, self).__init__(name)
# Register the local proxy.
# Register the teardown functions.
@self.teardown_appcontext
def _teardown(exception):
db = flask.g.get('_database_session', None)
if db is not None:
db.close()
self.register_blueprint(views.main)
@property
def trace(self):
d = flask.g.get('_trace', None)
if d is None:
result = trace.Trace.frompath(flask.session["trace"])
d = flask.g._trace = result
return d
@property
def database_session(self):
s = flask.g.get('_database_session', None)
if s is None:
# This session will be closed by the teardown function we register.
db = database.Database.get_database(flask.session["db"])
s = flask.g._database_session = db.session_factory()
return s
app = LLBuildApp(__name__)
# Set the secret key.
#
# We never expect this app to persist, so we just assign a new one each time.
app.secret_key = "DEBUG" if app.debug else os.urandom(24)