]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Fixed another bug regarding naming conventions, continuing
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Apr 2014 17:12:51 +0000 (13:12 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Apr 2014 17:12:51 +0000 (13:12 -0400)
from :ticket:`183`, where add_index()
drop_index() directives would not correctly render the ``f()``
construct when the index contained a convention-driven name.
fixes #194 re: #183

alembic/__init__.py
alembic/autogenerate/render.py
docs/build/changelog.rst
tests/test_autogen_render.py

index 540aed615a74cdbbc5e53d632f26ac320c451c35..66809662aa82ab98cac2fc567d9626fe10910d14 100644 (file)
@@ -1,6 +1,6 @@
 from os import path
 
-__version__ = '0.6.4'
+__version__ = '0.6.5'
 
 package_dir = path.abspath(path.dirname(__file__))
 
index be3bb45c2984e3c0d7084bac39014caa7207e457..ed9536c79642c614d3bc3c410547ca4996ba8eec 100644 (file)
@@ -82,7 +82,7 @@ def _add_index(index, autogen_context):
     """
     from .compare import _get_index_column_names
 
-    text = "%(prefix)screate_index('%(name)s', '%(table)s', %(columns)s, "\
+    text = "%(prefix)screate_index(%(name)r, '%(table)s', %(columns)s, "\
                     "unique=%(unique)r%(schema)s%(kwargs)s)" % {
         'prefix': _alembic_autogenerate_prefix(autogen_context),
         'name': _render_gen_name(autogen_context, index.name),
@@ -102,7 +102,7 @@ def _drop_index(index, autogen_context):
     Generate Alembic operations for the DROP INDEX of an
     :class:`~sqlalchemy.schema.Index` instance.
     """
-    text = "%(prefix)sdrop_index('%(name)s', "\
+    text = "%(prefix)sdrop_index(%(name)r, "\
                 "table_name='%(table_name)s'%(schema)s)" % {
             'prefix': _alembic_autogenerate_prefix(autogen_context),
             'name': _render_gen_name(autogen_context, index.name),
index 1ec20154dc133f4106e29fe051ee67ef7e459f99..b763c74290fb662197121bf412deb241199770e4 100644 (file)
@@ -2,6 +2,18 @@
 ==========
 Changelog
 ==========
+.. changelog::
+    :version: 0.6.5
+
+    .. change::
+      :tags: bug, autogenerate
+      :tickets: 194
+
+      Fixed another bug regarding naming conventions, continuing
+      from :ticket:`183`, where add_index()
+      drop_index() directives would not correctly render the ``f()``
+      construct when the index contained a convention-driven name.
+
 .. changelog::
     :version: 0.6.4
     :released: March 28, 2014
index af12f9e815c12e19c175f0b59a18b3ee9b22b459..a4f14bd2c674f0ae81c4e5562f52b41846a2ac71 100644 (file)
@@ -767,6 +767,46 @@ class RenderNamingConventionTest(TestCase):
             "sa.UniqueConstraint('c', name='q')"
         )
 
+    def test_render_add_index(self):
+        t = Table('test', self.metadata,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+        )
+        idx = Index(None, t.c.active, t.c.code)
+        eq_ignore_whitespace(
+            autogenerate.render._add_index(idx, self.autogen_context),
+            "op.create_index(op.f('ix_ct_test_active'), 'test', "
+            "['active', 'code'], unique=False)"
+        )
+
+    def test_render_drop_index(self):
+        t = Table('test', self.metadata,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+        )
+        idx = Index(None, t.c.active, t.c.code)
+        eq_ignore_whitespace(
+            autogenerate.render._drop_index(idx, self.autogen_context),
+            "op.drop_index(op.f('ix_ct_test_active'), table_name='test')"
+        )
+
+    def test_render_add_index_schema(self):
+        t = Table('test', self.metadata,
+            Column('id', Integer, primary_key=True),
+            Column('active', Boolean()),
+            Column('code', String(255)),
+            schema='CamelSchema'
+        )
+        idx = Index(None, t.c.active, t.c.code)
+        eq_ignore_whitespace(
+            autogenerate.render._add_index(idx, self.autogen_context),
+            "op.create_index(op.f('ix_ct_CamelSchema_test_active'), 'test', "
+            "['active', 'code'], unique=False, schema='CamelSchema')"
+        )
+
+
     def test_implicit_unique_constraint(self):
         t = Table('t', self.metadata, Column('c', Integer, unique=True))
         uq = [c for c in t.constraints if isinstance(c, UniqueConstraint)][0]