From: Carlos Eduardo Rivera Date: Mon, 25 Aug 2014 19:06:45 +0000 (-0500) Subject: Adding TextClause support to server_default X-Git-Tag: rel_0_7_0~78^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9925729686a498fa5dbee1cf0bd169c6e960fa1;p=thirdparty%2Fsqlalchemy%2Falembic.git Adding TextClause support to server_default --- diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index 81bd774a..e8d5f885 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -297,8 +297,15 @@ def _render_column(column, autogen_context): rendered = _render_server_default( column.server_default, autogen_context ) + if rendered: - opts.append(("server_default", rendered)) + if isinstance(column.server_default.arg, sql.elements.TextClause): + opts.append(("server_default", "%(prefix)stext(%(default)s)" % { + 'prefix': _sqlalchemy_autogenerate_prefix(autogen_context), + 'default': rendered + })) + else: + opts.append(("server_default", rendered)) if not column.autoincrement: opts.append(("autoincrement", column.autoincrement)) diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index d2534109..01b66b64 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -6,7 +6,7 @@ from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \ Numeric, CHAR, ForeignKey, DATETIME, INTEGER, \ TypeDecorator, CheckConstraint, Unicode, Enum,\ UniqueConstraint, Boolean, ForeignKeyConstraint,\ - PrimaryKeyConstraint, Index, func + PrimaryKeyConstraint, Index, func, text from sqlalchemy.types import TIMESTAMP from sqlalchemy.dialects import mysql, postgresql from sqlalchemy.sql import and_, column, literal_column @@ -913,3 +913,17 @@ class RenderNamingConventionTest(TestCase): ), "sa.CheckConstraint('im a constraint', name=op.f('ck_t_cc1'))" ) + + def test_render_col_with_text_server_default(self): + c = Column('updated_at', TIMESTAMP(), + server_default=text('now()'), + nullable=False) + result = autogenerate.render._render_column( + c, self.autogen_context + ) + eq_( + result, + 'sa.Column(\'updated_at\', sa.TIMESTAMP(), ' + 'server_default=sa.text(\'now()\'), ' + 'nullable=False)' + ) \ No newline at end of file