def test_init_app(self): gravatar = Gravatar() if hasattr(self.app, 'extensions'): del self.app.extensions gravatar.init_app(self.app)
class AdminLTE(object): """ Attributes: app (flask.Flask): Application object. manager (Manager): Manager for accessing AdminLTE features. """ def __init__(self, app=None): self.app = app self.manager = Manager() self.flash = Flash() self.gravatar = Gravatar(default='mp') if app is not None: self.init_app(app) def init_app(self, app): """Initializes the extension.""" if not hasattr(app, 'extensions'): app.extensions = {} app.extensions['adminlte_full'] = self for name, value in DEFAULT_SETTINGS.items(): app.config.setdefault(name, value) # assets.init_app(app) self.gravatar.init_app(app) self.manager.user_getter(self.user_getter) self.manager.home_page = app.config['ADMINLTE_HOME_PAGE'] self.init_locale(app) self.register_blueprint(app) if not app.debug: app.register_error_handler(HTTPException, self.error_page) for name in filters.__all__: app.jinja_env.filters.setdefault(name, getattr(filters, name)) @app.context_processor def processors(): return dict( adminlte=self.manager, adminlte_user=self.manager.user, ThemeColor=ThemeColor, ThemeLayout=ThemeLayout, ) if not hasattr(app.jinja_env, 'install_gettext_callables'): app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_null_translations(True) def init_locale(self, app): """Initializes the manager to use locales.""" babel = app.extensions.get('babel') if babel is not None: self.manager.default_locale = str(babel.default_locale) self.manager.locale_getter(lambda: babel.locale_selector_func and babel.locale_selector_func()) else: self.manager.default_locale = app.config.get( 'ADMINLTE_DEFAULT_LOCALE') def error_page(self, err): """Page for all HTTP errors.""" template = f'adminlte_full/http_error_page.html' context = { 'status_code': err.code, 'status_message': err.name, 'details': err.get_description(), } return render_template(template, **context), err.code def register_blueprint(self, app): """Registers Blueprint.""" app.register_blueprint( Blueprint('adminlte_full', __name__, static_folder='static', template_folder=pkg_resources.resource_filename( 'adminlte_base', 'templates'), static_url_path='/adminlte_full')) def user_getter(self): """Returns the current user.""" return current_user, current_app.config['ADMINLTE_USER_MAPPING']