From 4425ef4c763099041ab765e6b8bba505c7acaf53 Mon Sep 17 00:00:00 2001 From: Konsta Vesterinen Date: Wed, 13 Aug 2014 11:16:02 +0300 Subject: [PATCH] Fix dependent_objects support for multiple dependencies --- CHANGES.rst | 6 ++++ setup.py | 2 +- sqlalchemy_utils/__init__.py | 2 +- sqlalchemy_utils/functions/foreign_keys.py | 2 +- tests/functions/test_dependent_objects.py | 36 ++++++++++++++++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 014e927..be0930d 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,12 @@ Changelog Here you can see the full list of changes between each SQLAlchemy-Utils release. +0.26.10 (2014-08-13) +^^^^^^^^^^^^^^^^^^^ + +- Fixed dependent_objects support for multiple dependencies + + 0.26.9 (2014-08-06) ^^^^^^^^^^^^^^^^^^^ diff --git a/setup.py b/setup.py index a50bb49..182075b 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ for name, requirements in extras_require.items(): setup( name='SQLAlchemy-Utils', - version='0.26.9', + version='0.26.10', url='https://github.com/kvesteri/sqlalchemy-utils', license='BSD', author='Konsta Vesterinen, Ryan Leckey, Janne Vanhala, Vesa Uimonen', diff --git a/sqlalchemy_utils/__init__.py b/sqlalchemy_utils/__init__.py index 8d82dfc..fc5734e 100644 --- a/sqlalchemy_utils/__init__.py +++ b/sqlalchemy_utils/__init__.py @@ -75,7 +75,7 @@ from .types import ( from .models import Timestamp -__version__ = '0.26.8' +__version__ = '0.26.10' __all__ = ( diff --git a/sqlalchemy_utils/functions/foreign_keys.py b/sqlalchemy_utils/functions/foreign_keys.py index 5ad9c43..1b3f051 100644 --- a/sqlalchemy_utils/functions/foreign_keys.py +++ b/sqlalchemy_utils/functions/foreign_keys.py @@ -296,7 +296,7 @@ def dependent_objects(obj, foreign_keys=None): ) ) chain.queries.append(query) - return chain + return chain def non_indexed_foreign_keys(metadata, engine=None): diff --git a/tests/functions/test_dependent_objects.py b/tests/functions/test_dependent_objects.py index c57043e..8a717aa 100644 --- a/tests/functions/test_dependent_objects.py +++ b/tests/functions/test_dependent_objects.py @@ -78,6 +78,42 @@ class TestDependentObjects(TestCase): assert objects[3] in deps +class TestDependentObjectsWithManyReferences(TestCase): + def create_models(self): + class User(self.Base): + __tablename__ = 'user' + id = sa.Column(sa.Integer, primary_key=True) + first_name = sa.Column(sa.Unicode(255)) + last_name = sa.Column(sa.Unicode(255)) + + class BlogPost(self.Base): + __tablename__ = 'blog_post' + id = sa.Column(sa.Integer, primary_key=True) + author_id = sa.Column(sa.Integer, sa.ForeignKey('user.id')) + author = sa.orm.relationship(User) + + class Article(self.Base): + __tablename__ = 'article' + id = sa.Column(sa.Integer, primary_key=True) + author_id = sa.Column(sa.Integer, sa.ForeignKey('user.id')) + author = sa.orm.relationship(User) + + self.User = User + self.Article = Article + self.BlogPost = BlogPost + + def test_with_many_dependencies(self): + user = self.User(first_name=u'John') + objects = [ + self.Article(author=user), + self.BlogPost(author=user) + ] + self.session.add_all(objects) + self.session.commit() + deps = list(dependent_objects(user)) + assert len(deps) == 2 + + class TestDependentObjectsWithCompositeKeys(TestCase): def create_models(self): class User(self.Base):