Files
deb-python-sqlalchemy-utils/sqlalchemy_utils/relationships/chained_join.py
2014-12-14 12:25:55 +02:00

29 lines
806 B
Python

def chained_join(*relationships):
property_ = relationships[0].property
if property_.secondary is not None:
from_ = property_.secondary.join(
property_.mapper.class_.__table__,
property_.secondaryjoin
)
else:
from_ = property_.mapper.class_.__table__
for relationship in relationships[1:]:
prop = relationship.property
if prop.secondary is not None:
from_ = from_.join(
prop.secondary,
prop.primaryjoin
)
from_ = from_.join(
prop.mapper.class_,
prop.secondaryjoin
)
else:
from_ = from_.join(
prop.mapper.class_,
prop.primaryjoin
)
return from_