From: Mike Bayer Date: Tue, 13 May 2008 19:52:15 +0000 (+0000) Subject: - fixed propagation of operate() for aliased relation descriptors X-Git-Tag: rel_0_5beta1~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b6306c69e730eafdae499443efeb83322ce03e8;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fixed propagation of operate() for aliased relation descriptors - ColumnEntity gets a selectable --- diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index 64f2f700d3..8d31963c3e 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -306,6 +306,12 @@ class PropertyLoader(StrategizedProperty): def __clause_element__(self): return self.prop.parent._with_polymorphic_selectable + + def operate(self, op, *other, **kwargs): + return op(self, *other, **kwargs) + + def reverse_operate(self, op, other, **kwargs): + return op(self, *other, **kwargs) def of_type(self, cls): return PropertyLoader.Comparator(self.prop, cls) diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 31d85b15ae..ec3b6344b8 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1489,6 +1489,7 @@ class _ColumnEntity(_QueryEntity): self.entity_zero = None def setup_entity(self, entity, mapper, adapter, from_obj, is_aliased_class, with_polymorphic): + self.selectable = from_obj self.froms.add(from_obj) def __resolve_expr_against_query_aliases(self, query, expr, context): diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 9d48b31c1e..f97bd0cf37 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -1200,10 +1200,10 @@ class Operators(object): return op def operate(self, op, *other, **kwargs): - raise NotImplementedError() + raise NotImplementedError(str(op)) def reverse_operate(self, op, other, **kwargs): - raise NotImplementedError() + raise NotImplementedError(str(op)) class ColumnOperators(Operators): """Defines comparison and math operations.""" diff --git a/test/orm/mapper.py b/test/orm/mapper.py index b397a8b4c7..86ad48f954 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -1855,7 +1855,7 @@ class MagicNamesTest(_base.MappedTest): sess.save(c) sess.flush() sess.clear() - + for C, M in ((Cartographer, Map), (sa.orm.aliased(Cartographer), sa.orm.aliased(Map))): c1 = (sess.query(C).