diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-20 13:53:11 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-20 13:53:11 -0400 |
commit | eea8dfcfc208b05aa57faea17233224da0382678 (patch) | |
tree | ac6c92770a57cff5892e7f7b73548dadd671c716 /alembic | |
parent | 5700b385aac8fbb2c56704c048be847d6a4832fa (diff) | |
download | alembic-eea8dfcfc208b05aa57faea17233224da0382678.tar.gz |
- restore _render_server_default_for_compare() to compare.py using
the method previously used in _render_server_default() in render;
these two functions become more specific to compare vs. render now
so are separated out
Diffstat (limited to 'alembic')
-rw-r--r-- | alembic/autogenerate/compare.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/alembic/autogenerate/compare.py b/alembic/autogenerate/compare.py index bfca75e..b5af2d8 100644 --- a/alembic/autogenerate/compare.py +++ b/alembic/autogenerate/compare.py @@ -1,11 +1,9 @@ from sqlalchemy import schema as sa_schema, types as sqltypes -from sqlalchemy.exc import NoSuchTableError -from sqlalchemy import sql import logging from .. import compat -from .render import _render_server_default, _render_potential_expr from sqlalchemy.util import OrderedSet - +import re +from .render import _user_defined_render log = logging.getLogger(__name__) @@ -477,9 +475,25 @@ def _compare_type(schema, tname, cname, conn_col, def _render_server_default_for_compare(metadata_default, metadata_col, autogen_context): - return _render_server_default( - metadata_default, autogen_context, - repr_=metadata_col.type._type_affinity is sqltypes.String) + rendered = _user_defined_render( + "server_default", metadata_default, autogen_context) + if rendered is not False: + return rendered + + if isinstance(metadata_default, sa_schema.DefaultClause): + if isinstance(metadata_default.arg, compat.string_types): + metadata_default = metadata_default.arg + else: + metadata_default = str(metadata_default.arg.compile( + dialect=autogen_context['dialect'])) + if isinstance(metadata_default, compat.string_types): + if metadata_col.type._type_affinity is sqltypes.String: + metadata_default = re.sub(r"^'|'$", "", metadata_default) + return repr(metadata_default) + else: + return metadata_default + else: + return None def _compare_server_default(schema, tname, cname, conn_col, metadata_col, |