]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Adding TextClause support to server_default
authorCarlos Eduardo Rivera <cerivera@fastmail.fm>
Mon, 25 Aug 2014 19:06:45 +0000 (14:06 -0500)
committerCarlos Eduardo Rivera <cerivera@fastmail.fm>
Mon, 25 Aug 2014 19:06:45 +0000 (14:06 -0500)
alembic/autogenerate/render.py
tests/test_autogen_render.py

index 81bd774ad53f8b9d1f81483231ff35e7cfb012aa..e8d5f885d53ba5f03813af37163781f8285f0940 100644 (file)
@@ -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))
index d253410950981ff25440683b633624cac1eac6d5..01b66b64d8b6a9b58dbfe83fc6f0bb0bc291e7d3 100644 (file)
@@ -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