From: Mike Bayer Date: Tue, 1 Apr 2014 17:12:51 +0000 (-0400) Subject: Fixed another bug regarding naming conventions, continuing X-Git-Tag: rel_0_6_5~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9fa7d9651df412a405b848f1bb5848fde5200f1;p=thirdparty%2Fsqlalchemy%2Falembic.git 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. fixes #194 re: #183 --- diff --git a/alembic/__init__.py b/alembic/__init__.py index 540aed61..66809662 100644 --- a/alembic/__init__.py +++ b/alembic/__init__.py @@ -1,6 +1,6 @@ from os import path -__version__ = '0.6.4' +__version__ = '0.6.5' package_dir = path.abspath(path.dirname(__file__)) diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index be3bb45c..ed9536c7 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -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), diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst index 1ec20154..b763c742 100644 --- a/docs/build/changelog.rst +++ b/docs/build/changelog.rst @@ -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 diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index af12f9e8..a4f14bd2 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -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]