]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Schema fixes on rendering of alembic op. directives
authorDimitris Theodorou <dimitris.theodorou@gmail.com>
Sun, 19 Jan 2014 14:40:03 +0000 (15:40 +0100)
committerDimitris Theodorou <dimitris.theodorou@gmail.com>
Sun, 19 Jan 2014 14:40:03 +0000 (15:40 +0100)
Added schema parameter in _drop_index, _drop_constraint
Removed prepending of the schema name in _add_index table
parameter.

alembic/autogenerate/render.py
tests/test_autogen_render.py

index b89227adebe95aeff9a45f840a4b761aa5fc1170..38e953c6fbff021f00b1a759a829bdb7119740b3 100644 (file)
@@ -67,7 +67,7 @@ def _add_index(index, autogen_context):
                     "unique=%(unique)r%(schema)s%(kwargs)s)" % {
         'prefix': _alembic_autogenerate_prefix(autogen_context),
         'name': index.name,
-        'table': index.table,
+        'table': index.table.name,
         'columns': _get_index_column_names(index),
         'unique': index.unique or False,
         'schema': (", schema='%s'" % index.table.schema) if index.table.schema else '',
@@ -83,10 +83,14 @@ def _drop_index(index, autogen_context):
     Generate Alembic operations for the DROP INDEX of an
     :class:`~sqlalchemy.schema.Index` instance.
     """
-    text = "%sdrop_index('%s', '%s')" % (
-                    _alembic_autogenerate_prefix(autogen_context),
-                    index.name,
-                    index.table)
+    text = "%(prefix)sdrop_index('%(name)s', "\
+                "table_name='%(table_name)s'%(schema)s)" % {
+            'prefix': _alembic_autogenerate_prefix(autogen_context),
+            'name': index.name,
+            'table_name': index.table.name,
+            'schema': ((", schema='%s'" % index.table.schema)
+                       if index.table.schema else '')
+        }
     return text
 
 
@@ -160,10 +164,12 @@ def _drop_constraint(constraint, autogen_context):
     Generate Alembic operations for the ALTER TABLE ... DROP CONSTRAINT
     of a  :class:`~sqlalchemy.schema.UniqueConstraint` instance.
     """
-    text = "%(prefix)sdrop_constraint(%(name)r, '%(table)s')" % {
+    text = "%(prefix)sdrop_constraint(%(name)r, '%(table_name)s'%(schema)s)" % {
             'prefix': _alembic_autogenerate_prefix(autogen_context),
             'name': constraint.name,
-            'table': constraint.table,
+            'table_name': constraint.table.name,
+            'schema': (", schema='%s'" % constraint.table.schema)
+                      if constraint.table.schema else '',
     }
     return text
 
index c1942ef9e84cbb23be48488ed6678f558d43a048..d06b36c38355c522bbbb6f5a1b8211ebf12de39c 100644 (file)
@@ -68,7 +68,7 @@ class AutogenRenderTest(TestCase):
         idx = Index('test_active_code_idx', t.c.active, t.c.code)
         eq_ignore_whitespace(
             autogenerate.render._add_index(idx, self.autogen_context),
-            "op.create_index('test_active_code_idx', 'CamelSchema.test', "
+            "op.create_index('test_active_code_idx', 'test', "
             "['active', 'code'], unique=False, schema='CamelSchema')"
         )
 
@@ -127,7 +127,25 @@ class AutogenRenderTest(TestCase):
         idx = Index('test_active_code_idx', t.c.active, t.c.code)
         eq_ignore_whitespace(
             autogenerate.render._drop_index(idx, self.autogen_context),
-            "op.drop_index('test_active_code_idx', 'test')"
+            "op.drop_index('test_active_code_idx', table_name='test')"
+        )
+        
+    def test_drop_index_schema(self):
+        """
+        autogenerate.render._drop_index using schema
+        """
+        m = MetaData()
+        t = Table('test', m,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+            schema='CamelSchema'
+        )
+        idx = Index('test_active_code_idx', t.c.active, t.c.code)
+        eq_ignore_whitespace(
+            autogenerate.render._drop_index(idx, self.autogen_context),
+            "op.drop_index('test_active_code_idx', " +
+                          "table_name='test', schema='CamelSchema')"
         )
 
     def test_add_unique_constraint(self):
@@ -145,6 +163,23 @@ class AutogenRenderTest(TestCase):
             autogenerate.render._add_unique_constraint(uq, self.autogen_context),
             "op.create_unique_constraint('uq_test_code', 'test', ['code'])"
         )
+        
+    def test_add_unique_constraint_schema(self):
+        """
+        autogenerate.render._add_unique_constraint using schema
+        """
+        m = MetaData()
+        t = Table('test', m,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+            schema='CamelSchema'
+        )
+        uq = UniqueConstraint(t.c.code, name='uq_test_code')
+        eq_ignore_whitespace(
+            autogenerate.render._add_unique_constraint(uq, self.autogen_context),
+            "op.create_unique_constraint('uq_test_code', 'test', ['code'], schema='CamelSchema')"
+        )
 
     def test_drop_constraint(self):
         """
@@ -161,6 +196,23 @@ class AutogenRenderTest(TestCase):
             autogenerate.render._drop_constraint(uq, self.autogen_context),
             "op.drop_constraint('uq_test_code', 'test')"
         )
+        
+    def test_drop_constraint_schema(self):
+        """
+        autogenerate.render._drop_constraint using schema
+        """
+        m = MetaData()
+        t = Table('test', m,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+            schema='CamelSchema'
+        )
+        uq = UniqueConstraint(t.c.code, name='uq_test_code')
+        eq_ignore_whitespace(
+            autogenerate.render._drop_constraint(uq, self.autogen_context),
+            "op.drop_constraint('uq_test_code', 'test', schema='CamelSchema')"
+        )
 
     def test_render_table_upgrade(self):
         m = MetaData()