Source code for flask_diamond

# -*- coding: utf-8 -*-
# Flask-Diamond (c) Ian Dennis Miller

import flask
from .facets import *

try:
    from flask import _app_ctx_stack as stack
except ImportError:
    from flask import _request_ctx_stack as stack

application = None


[docs]class Diamond: """ A Diamond application. :param app: a Flask app that you created on your own :type app: Flask :returns: None """ def __init__(self, name=None): """ Initialize a Diamond application. :param app: a Flask app that you created on your own :type app: Flask :returns: Flask -- the initialized application object This function is the backbone of every Diamond application. It will initialize every component of the application. To control the behaviour of the initialization process, override these functions within your own application. """ if not name: name = __name__ self.app = flask.Flask(name) if hasattr(self.app, 'teardown_appcontext'): self.app.teardown_appcontext(self.teardown) else: self.app.teardown_request(self.teardown)
[docs] def facet(self, extension_name, *args, **kwargs): """ initialize an extension """ init_method = "init_{0}".format(extension_name) if not hasattr(self, init_method): method_to_call = globals()[init_method] else: method_to_call = getattr(self, init_method) setattr(self, init_method, method_to_call) try: # try to explicitly pass self as the first parameter result = method_to_call(self, *args, **kwargs) except TypeError: # just call it because it will be wrapped to inject self result = method_to_call(*args, **kwargs) self.app.logger.debug("facet {0}".format(extension_name)) return result
[docs] def super(self, extension_name, *args, **kwargs): """ invoke the initialization method for the superclass ex: self.super("administration") """ init_method = "init_{0}".format(extension_name) # ensure the global version is called method_to_call = globals()[init_method] result = method_to_call(self, *args, **kwargs) return result
[docs] def teardown(self, exception): """ Remove any persistent connections during application context teardown. :returns: None """ ctx = stack.top if hasattr(ctx, 'diamond'): pass # ctx.sqlite3_db.close()
@property def _app(self): ctx = stack.top if ctx is not None: if not hasattr(ctx, 'app'): pass return ctx.app

Topic Navigation

Version