Commits

Mike Bayer  committed 08fa215 Merge

Merged in marcinkuzminski/alembic (pull request #5)

  • Participants
  • Parent commits 1a5958c, 3e0b98f

Comments (0)

Files changed (5)

File alembic/autogenerate.py

                 "Can't proceed with --autogenerate option; environment "
                 "script %s does not provide "
                 "a MetaData object to the context." % (
-                    context._script.env_py_location
+                    context.script.env_py_location
                 ))
     connection = context.bind
     diffs = []

File alembic/templates/generic/script.py.mako

 def upgrade():
     ${upgrades if upgrades else "pass"}
 
+
 def downgrade():
     ${downgrades if downgrades else "pass"}

File alembic/templates/multidb/script.py.mako

 def upgrade(engine):
     eval("upgrade_%s" % engine.name)()
 
+
 def downgrade(engine):
     eval("upgrade_%s" % engine.name)()
 
 def upgrade_${engine}():
     ${context.get("%s_upgrades" % engine, "pass")}
 
+
 def downgrade_${engine}():
     ${context.get("%s_downgrades" % engine, "pass")}
 

File alembic/templates/pylons/env.py

 """
 from alembic import context
 from paste.deploy import loadapp
-import logging
+from logging.config import fileConfig
+from sqlalchemy.engine.base import Engine
+
 
 try:
     # if pylons app already in, don't create a new app
     from pylons import config as pylons_config
     pylons_config['__file__']
 except:
+    config = context.config
     # can use config['__file__'] here, i.e. the Pylons
     # ini file, instead of alembic.ini
     config_file = config.get_main_option('pylons_config_file')
-    config_file = config.config_file_name
-    logging.config.fileConfig(config_file)
+    fileConfig(config_file)
     wsgi_app = loadapp('config:%s' % config_file, relative_to='.')
 
+
 # customize this section for non-standard engine configurations.
-meta = __import__("%s.model.meta" % config['pylons.package']).model.meta
+meta = __import__("%s.model.meta" % wsgi_app.config['pylons.package']).model.meta
 
 # add your model's MetaData object here
 # for 'autogenerate' support
 # target_metadata = mymodel.Base.metadata
 target_metadata = None
 
+
 def run_migrations_offline():
     """Run migrations in 'offline' mode.
 
     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.
-    
+
     """
     context.configure(
                 url=meta.engine.url)
     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.
+
+    """
+    # specify here how the engine is acquired
+    # engine = meta.engine
+    raise NotImplementedError("Please specify engine connectivity here")
     
-    """
-    connection = meta.engine.connect()
+    if isintance(engine, Engine):
+        connection = engine.connect()
+    else:
+        raise Exception(
+            'Expected engine instance got %s instead' % type(engine)
+        )
+    
     context.configure(
                 connection=connection,
                 target_metadata=target_metadata

File alembic/templates/pylons/script.py.mako

 def upgrade():
     ${upgrades if upgrades else "pass"}
 
+
 def downgrade():
     ${downgrades if downgrades else "pass"}