def create_app(settings_override=None): app = Flask(import_name=__name__) app.config['SECRET_KEY'] = 'nomorestupidfuckinguuidscuztheybreakeverything' app.config['MONGODB_DB'] = 'RelayUI' app.config['MONGODB_HOST'] = 'localhost' app.config['MONGODB_PORT'] = 27017 # this should never change app.config['MONGODB_CONNECT'] = False app.debug = True app.logger.info('Loaded app with configs, launching datastore') user_datastore = RelayUIDatastore(db=db, user_model=UserMixin, role_model=RoleMixin, data_model=Data) app.logger.info('Launching extensions') security.init_app(app=app, datastore=user_datastore, register_blueprint=False) db.init_app(app=app) @app.before_request def before_request(): try: g.datastore = app.extensions['security'].datastore except Exception, e: app.logger.critical('Critical error before request: {}'.format(e)) abort(500)
def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://root:@localhost/knowledge_management?charset=utf8' #app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///flask-admin.db' # Create modules app.register_blueprint(indexModule) app.register_blueprint(themeModule) app.register_blueprint(groupModule) app.register_blueprint(relationModule) app.register_blueprint(constructionModule) app.register_blueprint(adminModule) app.register_blueprint(brustModule) app.config['DEBUG'] = True app.config['ADMINS'] = frozenset(['*****@*****.**']) app.config['SECRET_KEY'] = 'SecretKeyForSessionSigning' ''' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://%s:@%s/%s?charset=utf8' % (MYSQL_USER, MYSQL_HOST, MYSQL_DB) app.config['SQLALCHEMY_ECHO'] = False ''' app.config['DATABASE_CONNECT_OPTIONS'] = {} app.config['THREADS_PER_PAGE'] = 8 app.config['CSRF_ENABLED'] = True app.config['CSRF_SESSION_KEY'] = 'somethingimpossibletoguess' # Enable the toolbar? app.config['DEBUG_TB_ENABLED'] = app.debug # Should intercept redirects? app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = True # Enable the profiler on all requests, default to false app.config['DEBUG_TB_PROFILER_ENABLED'] = True # Enable the template editor, default to false app.config['DEBUG_TB_TEMPLATE_EDITOR_ENABLED'] = True # debug toolbar # toolbar = DebugToolbarExtension(app) # Create database db.init_app(app) with app.test_request_context(): db.create_all() # init security security.init_app(app, datastore=user_datastore) # init admin admin.init_app(app) admin.add_view(UserAdmin(User, db.session)) # admin.add_view(sqla.ModelView(User, db.session)) admin.add_view(sqla.ModelView(Role, db.session)) return app
def configure_extensions(self): # flask-migrate migrate.init_app(self, db) # flask_cors from flask_cors import CORS CORS(self, resources={r'/api/*': {'origins': '*'}}) # flask-security security.init_app(self, datastore=user_datastore, register_blueprint=True)
def register_extensions(app): from extensions import security, mail, migrate, admin, ckeditor db.init_app(app) security.init_app(app, user_datastore, confirm_register_form=ExtendedRegisterForm) mail.init_app(app) md = Markdown(app, extensions=['fenced_code', 'tables']) # migrate.init_app(app, db) # Add Flask-Admin views for Users and Roles admin.init_app(app) ckeditor.init_app(app) admin.add_view(UserAdmin(User, db.session)) admin.add_view(RoleAdmin(Role, db.session)) admin.add_view(PostAdmin(Post, db.session))
def create_app(self): # THIS NEEDS TO MIRROR YOUR __init__.py's APP INSTANTIATION # ... or whatever you need to setup the right test environment from flaskinni import app app.config.from_object('settings') user_datastore = SQLAlchemyUserDatastore(db, User, Role) register_extensions(app) # images configure_uploads(app, uploaded_images) # sort of like an application factory db.init_app(app) security.init_app(app, user_datastore, confirm_register_form=ExtendedRegisterForm) mail.init_app(app) md = Markdown(app, extensions=['fenced_code', 'tables']) # migrate.init_app(app, db) # Add Flask-Admin views for Users and Roles admin.init_app(app) admin.add_view(UserAdmin(User, db.session)) admin.add_view(RoleAdmin(Role, db.session)) admin.add_view(PostAdmin(Post, db.session))
def create_app(name=None, config=None): effective_name = name if name else __name__ app = Flask( effective_name, template_folder=os.path.join(FLASK_APP_DIR, '..', 'templates'), static_folder=os.path.join(FLASK_APP_DIR, '..', 'static') ) # Config effective_config = config or 'flask_application.config.app_config' app.config.from_object(effective_config) app.logger.info("Config: %s; DB: %s" % (app.config['ENVIRONMENT'], app.config['SQLALCHEMY_DATABASE_URI'])) # Logging import logging logging.basicConfig( level=app.config['LOG_LEVEL'], format='%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]', datefmt='%Y%m%d-%H:%M%p', ) # Email on errors if not app.debug: import logging.handlers mail_handler = logging.handlers.SMTPHandler( 'localhost', os.getenv('USER'), app.config['SYS_ADMINS'], '{0} error'.format(app.config['SITE_NAME']), ) mail_handler.setFormatter(logging.Formatter(''' Message type: %(levelname)s Location: %(pathname)s:%(lineno)d Module: %(module)s Function: %(funcName)s Time: %(asctime)s Message: %(message)s '''.strip())) mail_handler.setLevel(logging.ERROR) app.logger.addHandler(mail_handler) app.logger.info("Emailing on error is ENABLED") else: app.logger.info("Emailing on error is DISABLED") # Bootstrap from flask_bootstrap import Bootstrap Bootstrap(app) # Assets from flask.ext.assets import Environment app.assets = Environment(app) # Ensure output directory exists assets_output_dir = os.path.join(FLASK_APP_DIR, '..', 'static', 'gen') if not os.path.exists(assets_output_dir): os.mkdir(assets_output_dir) # Email mail.init_app(app) app.mail = mail # Memcache cache.init_app(app) app.cache = cache # Business Logic # http://flask.pocoo.org/docs/patterns/packages/ # http://flask.pocoo.org/docs/blueprints/ from flask_application.controllers.frontend import frontend app.register_blueprint(frontend) # SQLAlchemy db.init_app(app) app.db = db from flask.ext.security import SQLAlchemyUserDatastore from flask_application.models import User, Role from flask_application.ext.flask_security import ExtendedLoginForm # Setup Flask-Security user_datastore = SQLAlchemyUserDatastore(db, User, Role) app.user_datastore = user_datastore security.init_app(app=app, datastore=user_datastore, login_form=ExtendedLoginForm) app.security = security from flask_application.controllers.admin import admin app.register_blueprint(admin) # REST from flask.ext.restful import Api app.api = Api(app) # TODO from flask_application.controllers.todo import todo_blueprint app.register_blueprint(todo_blueprint) from flask_application.controllers.todo import TodoResource app.api.add_resource(TodoResource, '/api/todo', '/api/todo/<int:todo_id>') from werkzeug.contrib.fixers import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app) if app.config['SETUP_DB']: with app.app_context(): app.db.drop_all() app.db.create_all() from flask_application.populate import populate_data populate_data(app) return app