if rendered is not False:
return rendered
- add_text_wrap = False
if isinstance(default, sa_schema.DefaultClause):
- add_text_wrap = isinstance(default.arg, sql.elements.TextClause)
+ default = _render_potential_expr(default.arg, autogen_context)
- if isinstance(default.arg, string_types):
- default = default.arg
- else:
- default = str(default.arg.compile(
- dialect=autogen_context['dialect']))
-
- if isinstance(default, string_types):
- if repr_:
- default = repr(re.sub(r"^'|'$", "", default))
-
- if add_text_wrap:
- default = "%(prefix)stext(%(default)s)" % {
- 'prefix': _sqlalchemy_autogenerate_prefix(autogen_context),
- 'default': default
- }
+ elif isinstance(default, string_types) and repr_:
+ default = repr(re.sub(r"^'|'$", "", default))
- return default
- else:
- return None
+ return default
def _repr_type(type_, autogen_context):
rendered = _user_defined_render("type", type_, autogen_context)
PrimaryKeyConstraint, Index, func, text
from sqlalchemy.types import TIMESTAMP
from sqlalchemy.dialects import mysql, postgresql
-from sqlalchemy.sql import and_, column, literal_column
+from sqlalchemy.sql import and_, column, literal_column, false
from . import patch
'dialect': postgresql.dialect()
}
-
def setUp(self):
convention = {
"sa.CheckConstraint('im a constraint', name=op.f('ck_t_cc1'))"
)
- def test_render_col_with_text_server_default(self):
+ def test_render_server_default_text(self):
c = Column('updated_at', TIMESTAMP(),
server_default=text('now()'),
nullable=False)
'sa.Column(\'updated_at\', sa.TIMESTAMP(), '
'server_default=sa.text(\'now()\'), '
'nullable=False)'
- )
\ No newline at end of file
+ )
+
+ def test_render_server_default_native_boolean(self):
+ c = Column('updated_at', Boolean(),
+ server_default=false(),
+ nullable=False)
+ result = autogenerate.render._render_column(
+ c, self.autogen_context
+ )
+ eq_(
+ result,
+ 'sa.Column(\'updated_at\', sa.Boolean(), '
+ 'server_default=sa.text(\'false\'), '
+ 'nullable=False)'
+ )
+
+ def test_render_server_default_non_native_boolean(self):
+ c = Column('updated_at', Boolean(),
+ server_default=false(),
+ nullable=False)
+ autogen_context = {
+ 'opts': {
+ 'sqlalchemy_module_prefix': 'sa.',
+ 'alembic_module_prefix': 'op.',
+ },
+ 'dialect': mysql.dialect()
+ }
+
+ result = autogenerate.render._render_column(
+ c, autogen_context
+ )
+ eq_(
+ result,
+ 'sa.Column(\'updated_at\', sa.Boolean(), '
+ 'server_default=sa.text(\'0\'), '
+ 'nullable=False)'
+ )
+
+ def test_render_server_default_func(self):
+ c = Column('updated_at', TIMESTAMP(),
+ server_default=func.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)'
+ )
+
+
+