summaryrefslogtreecommitdiff
path: root/alembic
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-09-20 13:53:11 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-09-20 13:53:11 -0400
commiteea8dfcfc208b05aa57faea17233224da0382678 (patch)
treeac6c92770a57cff5892e7f7b73548dadd671c716 /alembic
parent5700b385aac8fbb2c56704c048be847d6a4832fa (diff)
downloadalembic-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.py28
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,