diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-05-27 21:43:29 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-05-27 21:43:29 -0400 |
commit | ff399ac75074916045410cedae72489cb60e8b50 (patch) | |
tree | ea3553d73052aaba1abcb86cb0b072ea4fffbc00 /lib/sqlalchemy/sql/expression.py | |
parent | 0adcfea0d30376461c75cced87481f04a42481c0 (diff) | |
download | sqlalchemy-ff399ac75074916045410cedae72489cb60e8b50.tar.gz |
magic accessors to the rescue
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 3f9aef2b7..402e52272 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -1659,6 +1659,8 @@ class ClauseElement(Visitable): is_selectable = False is_clause_element = True + _order_by_label_element = None + def _clone(self): """Create a shallow copy of this ClauseElement. @@ -3690,6 +3692,13 @@ class UnaryExpression(ColumnElement): self.type = sqltypes.to_instance(type_) self.negate = negate + @util.memoized_property + def _order_by_label_element(self): + if self.modifier in (operators.desc_op, operators.asc_op): + return self.element._order_by_label_element + else: + return None + @property def _from_objects(self): return self.element._from_objects @@ -4327,6 +4336,10 @@ class Label(ColumnElement): self._proxies = [element] @util.memoized_property + def _order_by_label_element(self): + return self + + @util.memoized_property def type(self): return sqltypes.to_instance( self._type or getattr(self._element, 'type', None) |