Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
 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))
Ejemplo n.º 7
0
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