]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fixed propagation of operate() for aliased relation descriptors
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 13 May 2008 19:52:15 +0000 (19:52 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 13 May 2008 19:52:15 +0000 (19:52 +0000)
- ColumnEntity gets a selectable

lib/sqlalchemy/orm/properties.py
lib/sqlalchemy/orm/query.py
lib/sqlalchemy/sql/expression.py
test/orm/mapper.py

index 64f2f700d317e3c600421e85ce59972626617ad4..8d31963c3edcbbc09dc044a0284d848beed9b547 100644 (file)
@@ -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)
index 31d85b15aee6f1ba5d96d1df67640b6d2f9805e8..ec3b6344b842c6e71eb6b296c4a099a3a65ef791 100644 (file)
@@ -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):
index 9d48b31c1edd452cfb5fe1f1f267ca3f789f3bcd..f97bd0cf37a799a28607adcc3310420f4a126fe2 100644 (file)
@@ -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."""
index b397a8b4c790a61b21b1eabe646c4c09f81f8758..86ad48f9546048ddf9651cfe655c7e750af8fd7f 100644 (file)
@@ -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).