Source code for flask_open_directory.open_directory

# -*- coding: utf-8 -*-
import os

from flask import _app_ctx_stack

from .query import Query
from .base import BaseOpenDirectory


# CONFIGURATION
OPEN_DIRECTORY_SERVER = os.environ.get('OPEN_DIRECTORY_SERVER', 'localhost')
OPEN_DIRECTORY_BASE_DN = os.environ.get('OPEN_DIRECTORY_BASE_DN', None)


[docs]class OpenDirectory(BaseOpenDirectory): def __init__(self, app=None): config = { 'OPEN_DIRECTORY_SERVER': OPEN_DIRECTORY_SERVER, 'OPEN_DIRECTORY_BASE_DN': OPEN_DIRECTORY_BASE_DN, } super().__init__(**config) self.app = app if app is not None: self.init_app(app)
[docs] def init_app(self, app): """Initialize the extension with the application. :param app: The :class:`flask.Flask` application to register the extension with. """ self.config.update(app.config) if not hasattr(app, 'extensions'): app.extensions = {} # pragma: no cover app.extensions['open_directory'] = self if hasattr(app, 'teardown_appcontext'): app.teardown_appcontext(self.teardown) else: app.teardown_request(self.teardown) # pragma: no cover
[docs] def teardown(self, exception): """Clean-up for the extension. """ ctx = _app_ctx_stack.top if ctx is not None: if hasattr(ctx, 'open_directory_connection'): ctx.open_directory_connection.unbind() del(ctx.open_directory_connection)
[docs] def query(self, model=None, **kwargs) -> Query: """Create a query with this instance as it's ``open_directory`` attribute. :param model: An optional :class:`ModelABC` subclass to set for the query. :param kwargs: Extra key-word arguments to pass to the :class:`Query`, constructor. """ kwargs['open_directory'] = self kwargs['model'] = model return Query(**kwargs)