summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnn Kamyshnikova <akamyshnikova@mirantis.com>2014-11-11 18:59:00 +0300
committerAnn Kamyshnikova <akamyshnikova@mirantis.com>2014-11-11 18:59:00 +0300
commit6cc54aab2085b3cc676baf5061c034184d4c06e5 (patch)
tree46b42fdeb951912b4dc311ab72b2c784d50363d6
parentdb4d66f802a2ca03bdb59249a1dcdcd775c4ff57 (diff)
downloadalembic-6cc54aab2085b3cc676baf5061c034184d4c06e5.tar.gz
Add _add_fk_constraint and _drop_fk_constraint to render
-rw-r--r--alembic/autogenerate/api.py4
-rw-r--r--alembic/autogenerate/compare.py5
-rw-r--r--alembic/autogenerate/render.py19
3 files changed, 23 insertions, 5 deletions
diff --git a/alembic/autogenerate/api.py b/alembic/autogenerate/api.py
index 72c22a1..5a5e75a 100644
--- a/alembic/autogenerate/api.py
+++ b/alembic/autogenerate/api.py
@@ -9,7 +9,7 @@ from sqlalchemy.util import OrderedSet
from .compare import _compare_tables
from .render import _drop_table, _drop_column, _drop_index, _drop_constraint, \
_add_table, _add_column, _add_index, _add_constraint, _modify_col, \
- _add_fk_constraint
+ _add_fk_constraint, _drop_fk_constraint
from .. import util
log = logging.getLogger(__name__)
@@ -261,7 +261,7 @@ def _invoke_adddrop_command(updown, args, autogen_context):
"column": (_drop_column, _add_column),
"index": (_drop_index, _add_index),
"constraint": (_drop_constraint, _add_constraint),
- "fk":(_drop_constraint, _add_fk_constraint)
+ "fk":(_drop_fk_constraint, _add_fk_constraint)
}
cmd_callables = _commands[cmd_type]
diff --git a/alembic/autogenerate/compare.py b/alembic/autogenerate/compare.py
index f943926..5e7a303 100644
--- a/alembic/autogenerate/compare.py
+++ b/alembic/autogenerate/compare.py
@@ -569,7 +569,7 @@ FKInfo = collections.namedtuple('fk_info', ['constrained_columns',
def _compare_foreign_keys(schema, tname, object_filters, conn_table,
- metadata_table, diffs, autogen_context, inspector):
+ metadata_table, diffs, autogen_context, inspector):
# This methods checks foreign keys that tables contain in models with
# foreign keys that are in db.
# Get all necessary information about key of current table from db
@@ -596,7 +596,8 @@ def _compare_foreign_keys(schema, tname, object_filters, conn_table,
def _get_fk_info_from_db(fk):
- return FKInfo(tuple(fk['constrained_columns']), fk['referred_table'],
+ return FKInfo(tuple(fk['constrained_columns']),
+ fk['referred_table'],
tuple(fk['referred_columns']))
diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py
index 89dd2f2..a0bc534 100644
--- a/alembic/autogenerate/render.py
+++ b/alembic/autogenerate/render.py
@@ -194,7 +194,24 @@ def _uq_constraint(constraint, autogen_context, alter):
def _add_fk_constraint(constraint, fk_info, autogen_context):
- raise NotImplementedError()
+ args = [repr(_render_gen_name(autogen_context, constraint.name)),
+ constraint.parent.table.name]
+ args.extend([vars(fk_info).values()[1],
+ str(list(vars(fk_info).values()[0])),
+ str(list(vars(fk_info).values()[2]))])
+ return "%(prefix)screate_foreign_key(%(args)s)" % {
+ 'prefix': _alembic_autogenerate_prefix(autogen_context),
+ 'args': ", ".join(args)
+ }
+
+
+def _drop_fk_constraint(constraint, fk_info, autogen_context):
+ args = [repr(_render_gen_name(autogen_context, constraint.name)),
+ constraint.parent.table.name, 'type_=foreignkey']
+ return "%(prefix)sdrop_constraint(%(args)s)" % {
+ 'prefix': _alembic_autogenerate_prefix(autogen_context),
+ 'args': ", ".join(args)
+ }
def _add_pk_constraint(constraint, autogen_context):