Source code for flask_fedora_commons
__version_info__ = ('0', '0', '1')
__version__ = '.'.join(__version_info__)
__author__ = "Jeremy Nelson"
__license__ = 'Apache License, Version 2.0'
__copyright__ = '(c) 2013 by Jeremy Nelson'
                    
from lib.server import Repository
from flask import current_app
try:
    from flask import _app_ctx_stack as stack
except ImportError:
    from flask import _request_ctx_stack as stack
[docs]class FedoraCommons(object):
    def __init__(self, app=None):
        self.app = app
        if app is not None:
            self.init_app(app)
[docs]    def init_app(self, app):
        if hasattr(app, 'teardown_appcontext'):
            app.teardown_appcontext(self.teardown)
        else:
            app.teardown_request(self.teardown)
 
[docs]    def connect(self):
        return Repository()
 
[docs]    def teardown(self, exception):
        ctx = stack.top
        if hasattr(ctx, 'repository'):
            ctx.repository.close()
 
    @property
[docs]    def respository(self):
        ctx = stack.top
        if ctx is not None:
            if not hasattr(ctx, 'repository'):
                ctx.repository = self.connect()
            return ctx.repository