From 65bdf245c6cfd4381f8463714fbec1880a950fbb Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 23 Jul 2012 18:22:06 -0400 Subject: - [feature] ORM entities can be passed to select() as well as the select_from(), correlate(), and correlate_except() methods, where they will be unwrapped into selectables. [ticket:2245] --- lib/sqlalchemy/orm/attributes.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'lib/sqlalchemy/orm/attributes.py') diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 47349e64a..045a9465d 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -112,9 +112,11 @@ PASSIVE_ONLY_PERSISTENT = util.symbol("PASSIVE_ONLY_PERSISTENT", ) -class QueryableAttribute(interfaces.PropComparator): +class QueryableAttribute(interfaces._InspectionAttr, interfaces.PropComparator): """Base class for class-bound attributes. """ + is_attribute = True + def __init__(self, class_, key, impl=None, comparator=None, parententity=None, of_type=None): @@ -149,6 +151,10 @@ class QueryableAttribute(interfaces.PropComparator): # TODO: conditionally attach this method based on clause_element ? return self + @property + def expression(self): + return self.comparator.__clause_element__() + def __clause_element__(self): return self.comparator.__clause_element__() @@ -191,10 +197,7 @@ class QueryableAttribute(interfaces.PropComparator): def property(self): return self.comparator.property - -@inspection._inspects(QueryableAttribute) -def _get_prop(source): - return source.property +inspection._self_inspects(QueryableAttribute) class InstrumentedAttribute(QueryableAttribute): """Class bound instrumented attribute which adds descriptor methods.""" -- cgit v1.2.1