Fix dependent_objects support for multiple dependencies

This commit is contained in:
Konsta Vesterinen
2014-08-13 11:16:02 +03:00
parent e0851f961f
commit 4425ef4c76
5 changed files with 45 additions and 3 deletions

View File

@@ -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)
^^^^^^^^^^^^^^^^^^^

View File

@@ -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',

View File

@@ -75,7 +75,7 @@ from .types import (
from .models import Timestamp
__version__ = '0.26.8'
__version__ = '0.26.10'
__all__ = (

View File

@@ -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):

View File

@@ -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):