1def chained_join(*relationships):
2 """
3 Return a chained Join object for given relationships.
4 """
5 property_ = relationships[0].property
6
7 if property_.secondary is not None:
8 from_ = property_.secondary.join(
9 property_.mapper.class_.__table__, property_.secondaryjoin
10 )
11 else:
12 from_ = property_.mapper.class_.__table__
13 for relationship in relationships[1:]:
14 prop = relationship.property
15 if prop.secondary is not None:
16 from_ = from_.join(prop.secondary, prop.primaryjoin)
17
18 from_ = from_.join(prop.mapper.class_, prop.secondaryjoin)
19 else:
20 from_ = from_.join(prop.mapper.class_, prop.primaryjoin)
21 return from_