from __future__ import with_statement
from alembic import context
from sqlalchemy import create_engine
from sqlalchemy.engine.url import URL
from logging.config import fileConfig
from perception import db_config, config as myconfig


# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config

# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)

# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
target_metadata = None

# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... config.

# build URL
sqlalchemy_url = '%s://%s:%s@%s/%s' % (myconfig.db_drivername,
                                       myconfig.db_username,
                                       myconfig.db_password,
                                       myconfig.db_host,
                                       myconfig.database)


def run_migrations_offline():
    """Run migrations in 'offline' mode.

    This configures the context with just a URL
    and not an Engine, though an Engine is acceptable
    here as well.  By skipping the Engine creation
    we don't even need a DBAPI to be available.

    Calls to context.execute() here emit the given string to the
    script output.

    """
    url = config.get_main_option(sqlalchemy_url)
    context.configure(
        url=url, target_metadata=target_metadata, literal_binds=True)

    with context.begin_transaction():
        context.run_migrations()


def run_migrations_online():
    """Run migrations in 'online' mode.

    In this scenario we need to create an Engine
    and associate a connection with the context.

    """
    connectable = create_engine(URL(**db_config), pool_size=20)

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata
        )

        with context.begin_transaction():
            context.run_migrations()

if context.is_offline_mode():
    run_migrations_offline()
else:
    run_migrations_online()

@@ -191,39 +191,36 @@
 tion
- import db_config, config as my
+.shared.variables import db_
 conf
@@ -812,904 +812,8 @@
 g.%0A%0A
-# build URL%0Asqlalchemy_url = '%25s://%25s:%25s@%25s/%25s' %25 (myconfig.db_drivername,%0A                                       myconfig.db_username,%0A                                       myconfig.db_password,%0A                                       myconfig.db_host,%0A                                       myconfig.database)%0A%0A%0Adef run_migrations_offline():%0A    %22%22%22Run migrations in 'offline' mode.%0A%0A    This configures the context with just a URL%0A    and not an Engine, though an Engine is acceptable%0A    here as well.  By skipping the Engine creation%0A    we don't even need a DBAPI to be available.%0A%0A    Calls to context.execute() here emit the given string to the%0A    script output.%0A%0A    %22%22%22%0A    url = config.get_main_option(sqlalchemy_url)%0A    context.configure(%0A        url=url, target_metadata=target_metadata, literal_binds=True)%0A%0A    with context.begin_transaction():%0A        context.run_migrations()%0A%0A
 %0Adef
@@ -1298,77 +1298,8 @@
 ()%0A%0A
-if context.is_offline_mode():%0A    run_migrations_offline()%0Aelse:%0A    
 run_

add from perception.shared.variables import db_config and remove offline migrations