path_element = entity.path_entity
mapper = entity.mapper
mappers.append(mapper)
- if mapper.has_property(token):
- prop = mapper.get_property(token)
+ if hasattr(mapper.class_, token):
+ prop = getattr(mapper.class_, token).property
else:
if raiseerr:
raise sa_exc.ArgumentError(
if prop:
pj, sj, source, dest, \
- secondary, target_adapter = prop._synonym_resolved_property._create_joins(
+ secondary, target_adapter = prop._create_joins(
source_selectable=adapt_from,
dest_selectable=adapt_to,
source_polymorphic=True,
class OptionsTest(_fixtures.FixtureTest):
- @testing.fails_if(lambda: True, "0.7 regression, may not support "
- "synonyms for relationship")
@testing.fails_on('maxdb', 'FIXME: unknown')
def test_synonym_options(self):
Address, addresses, users, User = (self.classes.Address,
])
self.assert_sql_count(testing.db, go, 1)
+ def test_options_syn_of_syn_string(self):
+ User, Order = self.classes.User, self.classes.Order
+
+ s = create_session()
+ def go():
+ result = s.query(User).filter_by(name='jack').\
+ options(joinedload('orders_syn_2')).all()
+ eq_(result, [
+ User(id=7, name='jack', orders=[
+ Order(description=u'order 1'),
+ Order(description=u'order 3'),
+ Order(description=u'order 5')
+ ])
+ ])
+ self.assert_sql_count(testing.db, go, 1)
+
def test_joins(self):
- User = self.classes.User
+ User, Order = self.classes.User, self.classes.Order
for j in (
['orders', 'items'],
['orders_syn', 'items'],
+ [User.orders_syn, Order.items],
['orders_syn_2', 'items'],
+ [User.orders_syn_2, 'items'],
['orders', 'items_syn'],
['orders_syn', 'items_syn'],
['orders_syn_2', 'items_syn'],