def init_app(self, app): if app is None: return blueprint = Blueprint(AUTH_CONFIG_KEY.lower(), __name__) config = default_config.copy() try: config.update(app.config.get(AUTH_CONFIG_KEY, {})) except: pass app.config[AUTH_CONFIG_KEY] = config app.logger.debug("Auth Configuration: %s" % config) # setup the login manager extension login_manager = LoginManager() login_manager.anonymous_user = Anonymous login_manager.login_view = config[LOGIN_VIEW_KEY] login_manager.setup_app(app) # get some things form the config Provider = get_class_from_config(AUTH_PROVIDER_KEY, config) Encryptor = get_class_from_config(PASSWORD_ENCRYPTOR_KEY, config) Form = get_class_from_config(LOGIN_FORM_CLASS_KEY, config) # create the service and auth provider and add it to the app # so it can be referenced elsewhere app.login_manager = login_manager app.password_encryptor = Encryptor(config[SALT_KEY]) app.auth_provider = Provider(Form) DEBUG_LOGIN = '******' ERROR_LOGIN = '******' DEBUG_LOGOUT = 'User logged out, redirecting to: %s' FLASH_INACTIVE = 'Inactive user' @login_manager.user_loader def load_user(id): try: return user_service.get_user_with_id(id) except Exception, e: current_app.logger.error('Error getting user: %s' % e) return None
# shut up useless SA warning: import warnings; warnings.filterwarnings('ignore', 'Unicode type received non-unicode bind param value.') from sqlalchemy.exc import SAWarning warnings.filterwarnings('ignore', category=SAWarning) from migrate.versioning.util import construct_engine from flask import Flask from flaskext.login import LoginManager, current_user from flaskext.sqlalchemy import SQLAlchemy from grano import default_settings app = Flask(__name__) app.config.from_object(default_settings) app.config.from_envvar('GRANO_SETTINGS', silent=True) db = SQLAlchemy(app) login_manager = LoginManager() login_manager.setup_app(app) login_manager.login_view = 'account.login'