Beispiel #1
0
def create_app():
    app = Flask(__name__)

    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///hire.db'

    api.init_app(app)
    db.init_app(app)

    with app.app_context():
        db.create_all()
        cand = Candidate(firstname='Harry',
                         middlename='Ian',
                         lastname='Laurenceau',
                         city='Chicago',
                         state='MD')
        db.session.add(cand)
        db.session.commit()

    ma.init_app(app)

    @app.route('/health')
    def healthcheck():
        return {'status': 'UP'}

    @app.route('/history/<int:id>', methods=['POST'])
    def add_history(id):
        ceh = CandidateEmploymentHistorySchema()
        employment_history = request.json
        #employment_history['startdate'] = datetime.strptime(employment_history['startdate'], '%d-%m-%Y')
        #employment_history['enddate'] = datetime.strptime(employment_history['enddate'], '%d-%m-%Y')
        c = ceh.load(employment_history)
        print(c, type(c.startdate))
        return 'success'

    return app
def create_flask_app(config_object=None):
    """Flask app factory method"""
    app = Flask(__name__)
    if config_object is not None:
        app.config.from_object(config_object)
    else:
        app.config.from_mapping(
            BCRYPT_LOG_ROUNDS=10,
            SECRET_KEY=environ["FLASK_SECRET_KEY"],
            SQLALCHEMY_TRACK_MODIFICATIONS=False,
            SQLALCHEMY_DATABASE_URI=environ["DATABASE_PATH"],
        )

    # init database
    db.init_app(app)
    bcrypt.init_app(app)
    Migrate(app, db)
    __add_default_courses(app)

    # init api
    api.init_app(app)

    # init swagger
    app.register_blueprint(SWAGGER_UI_BLUEPRINT, url_prefix=SWAGGER_URL)

    return app
Beispiel #3
0
def create_app(script_info=None):

    # instantiate the app
    app = Flask(__name__)

    # set config
    app_settings = os.getenv("APP_SETTINGS")
    app.config.from_object(app_settings)

    # set up extensions
    db.init_app(app)
    cors.init_app(app, resources={r"*": {"origins": "*"}})
    bcrypt.init_app(app)

    # register api
    from app.api import api

    api.init_app(app)

    # shell context for flask cli
    @app.shell_context_processor
    def ctx():
        return {"app": app, "db": db}

    return app
def create_app(app_name=APP_NAME, test_config=None, **kwargs):
    """
    Function which creates Flask app instance and initializes database, API, and celery when given celery argument.
    Only celery worker calls this function without celery argument given, for its purpose of having its own instances.
    :param app_name: Application name. Can be set in definitions file.
    :param test_config: -
    :param kwargs: keyword arguments which may contain 'celery' key with celery app instance as argument.
    :return: Flask app instance
    """
    app = Flask(app_name)
    if kwargs.get("celery"):
        init_celery(kwargs.get("celery"), app)

    if test_config:
        app.config.update(test_config)
    else:
        app.config.from_mapping(
            SQLALCHEMY_DATABASE_URI=SQLALCHEMY_DB_URI,
            SQLALCHEMY_TRACK_MODIFICATIONS=SQLALCHEMY_TRACK_MODIFICATIONS,
        )

    with app.app_context():
        init_database(app)
        api.init_app(app)

    return app
Beispiel #5
0
def create_app():
    """
    flask application initialization skeleton

    :return Flask:
    """
    app_dir_path = os.path.dirname(os.path.realpath(__file__))
    root_path = os.path.abspath(os.path.join(app_dir_path, os.pardir))
    app = Flask(__name__, instance_relative_config=True, root_path=root_path)

    app.config.from_object(os.getenv('APP_SETTINGS', 'app.config.LocalConfig'))

    if os.path.exists(os.path.join(app.instance_path, 'log_config.conf')):
        fileConfig(os.path.join(app.instance_path, 'log_config.conf'),
                   defaults={
                       'logfilename':
                       os.path.join(app.root_path,
                                    app.config.get('LOGFILE_PATH'))
                   },
                   disable_existing_loggers=False)

    with app.app_context():
        from app.api import api
        from app.db import db
        from app.routes import configure_routes

        configure_routes(api)
        api.init_app(app)
        db.init_app(app)

        db.create_all()

    return app
Beispiel #6
0
def create_app(environemnt):
    """
    App factory for the server.

    Instantiates a Flask object.
    Configures the app according to the environment.
    Initializes the extensions.
    Adds the middleware to check headers.
    Returns the app instance.

    :param: environment
        Environemnt to configure the server to
    :returns:
    """
    app = Flask(__name__)
    app.config.from_object(cfg_map[environemnt])
    app.redis = Redis.from_url(app.config.get("REDIS_URL"))
    app.task_queue = Queue(app.config.get("REDIS_QUEUE_NAME"),
                           connection=app.redis)
    mongo_client = MongoClient(
        app.config.get("MONGO_URI"),
        authSource=app.config.get("MONGO_AUTH_SOURCE"),
    )
    app.mongo = mongo_client[app.config.get("MONGO_DATABASE")]

    from app import bcrypt
    from app import cors
    from app import db
    from app import migrate

    db.init_app(app)
    cors.init_app(app, resources={r"/*": {"origins": "*"}})
    bcrypt.init_app(app)
    migrate.init_app(app, db)

    from app.api import api

    api.init_app(app)

    from app.api.auth.models import Token  # noqa: F401
    from app.api.sentiment.models import Sentiment  # noqa: F401
    from app.api.users.models import User  # noqa: F401

    @app.before_request
    def check_headers():
        if ("swagger" not in request.path and "admin" not in request.path
                and request.method != "OPTIONS"):
            accepts = request.headers.get("Accept")
            if not accepts or accepts != "application/json":
                abort(415, "Only content type supported is application/json")
            if request.method in ["POST", "PUT"]:
                content_type = request.headers.get("Content-Type")
                if not content_type or content_type != "application/json":
                    abort(
                        415,
                        "POST/PUT requests should define Content-Type header",
                    )

    return app
Beispiel #7
0
def make_app():
    _app = Flask(__name__)
    _app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URI']
    _app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(_app)
    api.init_app(_app)
    Migrate(app=_app, db=db)
    return _app
Beispiel #8
0
def initialize_app(flask_app, testing=False):
    configure_app(flask_app, testing=testing)
    MongoEngine(flask_app)

    blueprint = Blueprint('api', __name__, url_prefix='/api')
    api.init_app(blueprint)
    api.add_namespace(images_tasks_namespace)
    api.add_namespace(text_tasks_namespace)
    flask_app.register_blueprint(blueprint)
Beispiel #9
0
def create_app(flask_config_name=None):
    '''' create flask app '''

    ## Load Config
    env_flask_config_name = os.getenv('FLASK_CONFIG')
    if not env_flask_config_name and flask_config_name is None:
        flask_config_name = 'development'
    elif flask_config_name is None:
        flask_config_name = env_flask_config_name


    try:
        if CONFIG_NAME_MAPPER[flask_config_name] is None:
            return None
    except KeyError:
        return None

    ## Creat app
    app = Flask(__name__)
    app.config.from_pyfile(CONFIG_NAME_MAPPER[flask_config_name])
    app.config.SWAGGER_UI_JSONEDITOR = True
    app.config.SWAGGER_UI_DOC_EXPANSION = 'list'

    # CORS(app, reousrces={r'/api/*':{"origins":app.config['CORS_ORIGIN']}})

    ## Set logger
    #logging.getLogger('flask_cors').level = logging.DEBUG
    #logging.getLogger('elasticsearch').level = logging.WARNING
    logging.basicConfig(format=app.config['LOGGER_FORMAT'], level=app.config['LOGGER_LEVEL'])

    ## db init
    from app.dao import daoPool
    daoPool.init_app(app)

    from app.model.userModel import User

    me = User('admin', '*****@*****.**', None, None)
    daoPool.sqlDAO.session.add(me)
    daoPool.sqlDAO.session.commit()


    ## Oauth init
    from app import oauth
    oauth.init_oauth(app)


    ## Api init
    from app.api import api

    api.init_app(app)



    return app
Beispiel #10
0
def register_plugin(app):
    api.init_app(app)
    db.init_app(app)
    ma.init_app(app)
    CORS().init_app(app)
    log.init_app(app)
    mail.init_app(app)

    with app.app_context():
        # db.drop_all()
        db.create_all()
Beispiel #11
0
def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    db.init_app(app)
    migrate.init_app(app, db)

    from app.api import api
    bp = Blueprint('api', __name__)
    api.init_app(bp)
    app.register_blueprint(bp, url_prefix='/api')

    return app
Beispiel #12
0
def setup_api():
    blueprint = setup_api.__dict__.get('blueprint')

    if blueprint:
        return blueprint

    blueprint = setup_api.__dict__['blueprint'] = Blueprint('api', __name__)

    api.init_app(blueprint)
    setup_tickets_endpoint()
    setup_tasks_endpoint()

    return blueprint
Beispiel #13
0
def create_app(environemnt):
    """
    App factory for the server.

    Instantiates a Flask object.
    Configures the app according to the environment.
    Initializes the extensions.
    Adds the middleware to check headers.
    Returns the app instance.

    :param: environment
        Environemnt to configure the server to
    :returns:
        Instance of the flask app
    """
    app = Flask(__name__)
    app.config.from_object(cfg_map[environemnt])

    db.init_app(app)
    cors.init_app(app, resources={r"/*": {"origins": "*"}})
    bcrypt.init_app(app)
    migrate.init_app(app, db)

    from app.api import api

    api.init_app(app)

    from app.api.auth.models import Token  # noqa: F401
    from app.api.sentiment.models import Sentiment  # noqa: F401
    from app.api.users.models import User  # noqa: F401

    @app.before_request
    def check_headers():
        if (
            "swagger" not in request.path
            and "admin" not in request.path
            and request.method != "OPTIONS"
        ):
            accepts = request.headers.get("Accept")
            if not accepts or accepts != "application/json":
                abort(415, "Only content type supported is application/json")
            if request.method in ["POST", "PUT"]:
                content_type = request.headers.get("Content-Type")
                if not content_type or content_type != "application/json":
                    abort(
                        415,
                        "POST/PUT requests should define Content-Type header",
                    )

    return app
Beispiel #14
0
def create_app(env='DEV'):
    """创建app"""
    app = Flask('OPERA_API', static_folder=DevConfig.STATIC_URL)
    if env == 'DEV':
        CORS(app)  # 跨域支持
        app.config.from_object(DevConfig)
    elif env == 'PROD':
        app.config.from_object(ProdConfig)
    elif env == 'TEST':
        app.config.from_object(TestConfig)

    jwt = JWTManager(app)
    BindJwt.init(jwt)  # 初始化jwt-auth

    db.init_app(app)  # 初始化MYSQL数据库
    mongo.init_app(app)  # 初始化MONGO数据库
    api.init_app(app)  # 绑定restful api
    return app
Beispiel #15
0
def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)
    flask_logger = create_logger(app)
    if not app.debug and not app.testing:
        if not os.path.exists(Config.LOG_FOLDER):
            os.mkdir(Config.LOG_FOLDER)
        file_handler = RotatingFileHandler(Config.LOG_FILE, maxBytes=10240, backupCount=10)
        file_handler.setFormatter(logging.Formatter(
            '%(asctime)s %(levelname)s: %(message)s '
            '[in %(pathname)s:%(lineno)d]'))
        file_handler.setLevel(logging.INFO)
        flask_logger.addHandler(file_handler)
        flask_logger.setLevel(logging.INFO)
        # app.logger.info('Upwbp startup')
        with app.app_context():
            api.init_app(app)
            # from app import routes
    return app
Beispiel #16
0
def create_app(script_info=None):

    app = Flask(__name__)

    app.url_map.strict_slashes = False

    app_settings = os.getenv("APP_SETTINGS")
    app.config.from_object(app_settings)

    # register api
    from app.api import api

    api.init_app(app)

    # shell context for flask cli
    @app.shell_context_processor
    def ctx():
        return {"app": app}

    return app
Beispiel #17
0
def create_app(test_config=None):
	'''
	This function creates and configures the application.
	'''
	app = Flask(__name__)

	if test_config is None:
		app.config.from_pyfile("config.py", silent=True)
	else:
		app.config.update(test_config)

	app.config['RESTPLUS_VALIDATE'] = True
	app.config['ERROR_404_HELP'] = False

	blueprint = Blueprint('api', __name__)
	api.init_app(blueprint)
	app.register_blueprint(blueprint)

	api.add_namespace(ns_default)

	return app
Beispiel #18
0
def create_app(script_info=None):

    # instantiate the app
    app = Flask(__name__)

    # set config
    app_settings = os.getenv("APP_SETTINGS")
    app.config.from_object(app_settings)

    # set up extensions
    db.init_app(app)
    cors.init_app(app, resources={r"*": {"origins": "*"}})
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    logger.setLevel(logging.DEBUG)
    handler = RotatingFileHandler('./logs/application.log', maxBytes=1024)
    handler.setFormatter(formatter)
    app.logger.addHandler(handler)
    mail.init_app(app)

    from .api.models.client_rating import ClientRating
    from .api.models.message import Message
    from .api.models.offer import Offer
    from .api.models.orders import Orders
    from .api.models.sharer_rating import SharerRating
    from .api.models.tag import Tag

    from .api.models.user import User
    guard.init_app(app, User)

    # register api
    from app.api import api

    api.init_app(app)

    # shell context for flask cli
    @app.shell_context_processor
    def ctx():
        return {"app": app, "db": db}

    return app
Beispiel #19
0
def create_app():
    """Функция, реализующая паттерн Application Factory
    (нужна для создания экземпляра приложения с нужной конфигурацией)"""
    app = Flask(__name__)
    app.config.from_object(f'app.config.{app.config["ENV"]}Config')

    app.register_blueprint(main_bp)
    app.register_blueprint(auth_bp)
    app.register_blueprint(errors_bp)

    init_logs(app)

    ASSETS.init_app(app)
    session.init_app(app)
    db.init_app(app)
    csrf.init_app(app)
    cdn.init_app(app)
    compress.init_app(app)
    babel.init_app(app)
    api.init_app(app)
    login_manager.init_app(app)
    TALISMAN.init_app(app, content_security_policy=CSP, force_https=False)

    return app
Beispiel #20
0
def initialize_app(flask_app):
    configure_app(flask_app)
    blueprint = Blueprint('app', __name__, url_prefix='')
    api.init_app(blueprint)
    api.add_namespace(juggling_namespace)
    flask_app.register_blueprint(blueprint)
Beispiel #21
0
from flask import Flask, Blueprint
from app.api import api
import os

basedir = os.path.dirname(os.path.abspath(__file__))
db_file = 'sqlite:///' + os.path.join(basedir, './db/born.db')

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = db_file
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

from app import tables
from app.api.born import ns as born_api

blueprint = Blueprint('api', __name__, url_prefix='/api')

api.init_app(blueprint)
api.add_namespace(born_api)
app.register_blueprint(blueprint)
Beispiel #22
0
def extensions(app):
    """"""
    db.init_app(app)
    api.init_app(app)
Beispiel #23
0
def create_app() -> Flask:  # pylint: disable=too-many-statements
    """
    Flask Factory pattern.

    Reference:
    http://flask.pocoo.org/docs/1.0/patterns/appfactories/
    """
    iguazu = Flask(__name__)
    iguazu.url_map.strict_slashes = False

    # Secret Key is required by Flask-Session.
    iguazu.secret_key = config.SECRET

    # Setting debug mode.
    iguazu.debug = bool(config.DEBUG)

    # Updating logger messages.
    logging.basicConfig(level=config.LOG_LEVEL, format=config.LOG_FORMAT)

    # Loading DB connector.
    iguazu.config['MONGODB_DB'] = config.MONGO_NAME
    iguazu.config['MONGODB_HOST'] = config.MONGO_HOST
    iguazu.config['MONGODB_PORT'] = config.MONGO_PORT
    iguazu.config['MONGODB_USERNAME'] = config.MONGO_USER
    iguazu.config['MONGODB_PASSWORD'] = config.MONGO_PASS
    mongo.init_app(iguazu)

    # Loading login handler.
    iguazu.config["JWT_SECRET_KEY"] = config.SECRET
    iguazu.config["JWT_HEADER_NAME"] = config.JWT_HEADER_NAME
    jwt.init_app(iguazu)

    # Loading celery config.
    celery.conf.update(iguazu.config)
    iguazu.config["CELERY_RESULT_BACKEND"] = config.CELERY_RESULT_BACKEND
    iguazu.config["CELERY_BROKER_URL"] = config.CELERY_BROKER_URL

    def call(self, *args, **kwargs):
        """
        Main call.
        """
        with iguazu.app_context():
            return self.run(*args, **kwargs)

    celery.Task.__call__ = call

    # Loading cache connector.
    iguazu.config["REDIS_URL"] = config.REDIS_URI
    redis.init_app(iguazu)

    # Creating an admin.
    # WARNING: This piece of code has been created for the demo.
    #          This user will be used for testing purposes.
    if config.ADMIN_USER and config.ADMIN_PASS:
        with iguazu.app_context():
            logger.warning("Setting admin password.")
            try:
                admin = UsersController.create({
                    UsersController.USERNAME: config.ADMIN_USER,
                    UsersController.PASSWORD: config.ADMIN_PASS,
                }, {})
            except UsernameAlreadyTakenException:
                logger.warning("Admin already exists!")
            else:
                logger.warning("Admin created! | sf_admin=%s", admin)

    # Registering app views.
    api.init_app(iguazu)

    # End of app factory.
    logger.info("App started!")
    return iguazu
Beispiel #24
0
def create_app():
    """Factory pattern"""

    # Create flask app
    app = Flask(
        __name__,
        # template_folder='templates',
        instance_path=str(pathlib.Path(__file__).parent.joinpath("instance")),
    )
    app.wsgi_app = ProxyFix(app.wsgi_app,
                            x_for=1,
                            x_proto=1,
                            x_host=1,
                            x_port=1)
    app.config.from_object('app.config.DevelopmentConfig')
    logging.basicConfig(level=logging.DEBUG)
    # app.debug = True

    # Initialize extensions
    db.init_app(app)  # SQLAlchemy
    cors.init_app(app, resources={r"*": {"origins": "*"}})
    bcrypt.init_app(app)

    # Register api
    from app.api import api
    api.init_app(app)

    # Build a sample db on the fly
    app_dir = op.realpath(os.path.dirname(__file__))
    database_path = op.join(app_dir, app.config['DATABASE_FILE'])
    # if os.path.exists(database_path):
    #     os.remove(database_path)
    #     seed_db(app)

    # shell context for flask cli
    @app.shell_context_processor
    def ctx():
        return {'app': app, 'db': db}

    # Flask views
    @app.route('/')
    def index():
        # return """<a href="/admin/">Click here to get to the admin views</a>"""
        return render_template_string("""
            <html><body>
                <a href="/admin/">Click here to get to the admin views</a><br>
                <a href="/docs/">Click here to go to the API documentation</a>
            </html></body>
        """)

    @app.route('/test/', methods=['GET', 'POST'])
    def test():
        return render_template('test.html')

    @app.route('/hello/', methods=['GET', 'POST'])
    def hello():
        # POST request
        if request.method == 'POST':
            current_app.logger.debug('Incoming..')
            current_app.logger.debug(request.get_json())  # parse as JSON
            return 'OK', 200

        # GET request
        else:
            message = {'greeting': 'Hello from Flask!'}
            return message  # serialize and use JSON headers

    # Add the database 'models' (tables) to the admin page
    from app.models import PowerUnit, PowerUnitMeta, User, MetaData
    from app.admin import SecuredAdminIndexView, PowerUnitView, PowerUnitMetaView, UserView, MetaDataView

    # Create admin interface
    flask_adm = Admin(app,
                      name='IJACK',
                      template_mode='bootstrap3',
                      index_view=SecuredAdminIndexView(name='Admin',
                                                       url='/admin',
                                                       endpoint='admin'))
    flask_adm.add_view(
        UserView(User, db.session, name='Users', endpoint='admin.users'))
    flask_adm.add_view(
        PowerUnitView(PowerUnit,
                      db.session,
                      name='Power Units',
                      endpoint='admin.power_units'))
    flask_adm.add_view(
        PowerUnitMetaView(PowerUnitMeta,
                          db.session,
                          name='Power Unit Meta',
                          endpoint='admin.power_units_meta'))
    flask_adm.add_view(
        MetaDataView(MetaData,
                     db.session,
                     name='Meta Data',
                     endpoint='admin.meta_data'))

    return app
Beispiel #25
0
def assign_plugins(app):
    db.init_app(app)
    cors.init_app(app)
    guard.init_app(app, User)
    api.init_app(app)
Beispiel #26
0
    "%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    handlers=[
        logging.FileHandler("{0}/{1}.log".format('log', 'output')),
        logging.StreamHandler()
    ])

app = Flask(__name__)


@app.route('/train')
def hello_world():
    return render_template('train.html')


@app.route('/chatroom_employee')
def chatroom_employee():
    return render_template('chatroom_employee.html')


@app.route('/chatroom_employer')
def chatroom_employer():
    return render_template('chatroom_employer.html')


app.wsgi_app = ProxyFix(app.wsgi_app)

from app.api import api
api.init_app(app)

app.run(host='0.0.0.0', debug=False)
Beispiel #27
0
def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    api.init_app(app)
    return app
Beispiel #28
0
def initialize_app(flask_app):
    configure_app(flask_app)
    CORS(flask_app)
    JWT(flask_app, authenticate, identity)
    api.init_app(flask_app)
    init_db()
Beispiel #29
0
def extensions(app):
    """An extension for typing the external instances to application instance"""
    api.init_app(app)
    db.init_app(app)
Beispiel #30
0
def init_ext(app):
    api.init_app(app)