Beispiel #1
0
def mongo_setup(app: Application):
    app.client = ma.AsyncIOMotorClient(MONGO_HOST)
    app.db = app.client[MONGO_DB_NAME]

    app['models'] = {'users': User(app.db)}

    app.on_startup.append(_check_users)
Beispiel #2
0
def initialize_db(app: Application) -> None:
    client, db = connect_db()

    app.client = client
    app.db = db

    app.on_cleanup.append(close_db)
    initialize_models(app)
Beispiel #3
0
async def database(app: web.Application) -> AsyncGenerator[None, None]:
    """
    A function that, when the server is started, connects to postgresql,
    and after stopping it breaks the connection (after yield)
    """
    config = app['config']['postgres']
    print(config)
    app.db = await aiopg.sa.create_engine(**config)
    db_set.set()

    yield

    app.db.close()
    await app.db.wait_closed()
Beispiel #4
0
async def create_app(loop):

    app = Application(loop=loop)
    add_config(app)
    aiohttp_jinja2.setup(app,
                         loader=jinja2.FileSystemLoader('/'.join([
                             os.path.dirname(os.path.dirname(__file__)),
                             app['config']['TEMPLATES']
                         ])))

    app.db = await db.init_pg(app)
    redis_pool = await cache.redis_pool(app)

    setup_session(app, RedisStorage(redis_pool))
    setup_security(app, SessionIdentityPolicy(), AuthorizationPolicy(app.db))

    app.on_cleanup.append(db.close_pg)

    routes.setup_routes(app)

    return app
Beispiel #5
0
async def init_app(loop, config_filename):
    config = read_config(config_filename)
    host = config['app']['host']
    port = config['app']['port']

    configure_logging()
    
    # Set up database
    client = AsyncIOMotorClient(
        config['mongo']['host'],
        config['mongo']['port'],
    )
    mongo_db_name = config['mongo']['db']
    db = client[mongo_db_name]

    app = Application(loop=loop)
    app.db = db
    # FIXME: find a better way to configure templates folder
    setup_jinja2(app, loader=jinja2.FileSystemLoader('app/templates'))

    # Setup views
    app.router.add_route('GET', '/', root_handler.index)
    app.router.add_route('GET', '/about', root_handler.about)
    app.router.add_route('GET', '/api/misc/{id}', api_misc_handler.get)
    app.router.add_route('POST', '/api/misc/', api_misc_handler.create)
    app.router.add_static('/static', config['app']['static-dir'])

    handler = app.make_handler()

    srv = await loop.create_server(handler, host, port)

    log.info(
        'App started at http://%(host)s:%(port)s',
        {'host': host, 'port': port}
    )
    return srv, handler
Beispiel #6
0
async def setup_connection_pool(app_: Application):
    if not app_.db:
        app_.db = await asyncpg.create_pool(dsn=db_dsn)
Beispiel #7
0
from config import *


@middleware
async def unauthenticated_middleware(request, handler):
    try:
        response = await handler(request)
    except auth.NotAuthenticated:
        raise HTTPFound('/login')
    else:
        return response


app = Application(middlewares=[unauthenticated_middleware])

app.db = None


# Temporal, cambiará bastante en base se desarrolle la abstracción de bd
async def setup_connection_pool(app_: Application):
    if not app_.db:
        app_.db = await asyncpg.create_pool(dsn=db_dsn)


# Registrar Jinja2
jinja_setup(app, loader=FileSystemLoader(templates_path))

# Registrar rutas de módulos
router = router.Router(app)
router.update(modules)
router.register()
 async def _on_connect(self, app: web.Application):
     await self.create_session()
     app.db = self