diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-02 01:10:20 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-02 01:10:20 +0000 |
commit | 297d35ba498c2f656df41737490977f88ca70682 (patch) | |
tree | 0e39ddca7e6e0b531a3a50a462a67ce184d2f235 /lib/sqlalchemy/sql_util.py | |
parent | 2b9322f606124abe036c1e8b0446ca6ba25b313c (diff) | |
download | sqlalchemy-297d35ba498c2f656df41737490977f88ca70682.tar.gz |
- got rudimental "mapping to multiple tables" functionality cleaned up,
more correctly documented
Diffstat (limited to 'lib/sqlalchemy/sql_util.py')
-rw-r--r-- | lib/sqlalchemy/sql_util.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql_util.py b/lib/sqlalchemy/sql_util.py index 0728bba47..1a720d1d5 100644 --- a/lib/sqlalchemy/sql_util.py +++ b/lib/sqlalchemy/sql_util.py @@ -9,7 +9,22 @@ class TableCollection(object): self.tables = [] def add(self, table): self.tables.append(table) - def sort(self, reverse=False ): + if hasattr(self, '_sorted'): + del self._sorted + def sort(self, reverse=False): + try: + sorted = self._sorted + except AttributeError, e: + self._sorted = self._do_sort() + return self.sort(reverse=reverse) + if reverse: + x = sorted[:] + x.reverse() + return x + else: + return sorted + + def _do_sort(self): import sqlalchemy.orm.topological tuples = [] class TVisitor(schema.SchemaVisitor): @@ -29,8 +44,6 @@ class TableCollection(object): to_sequence( child ) if head is not None: to_sequence( head ) - if reverse: - sequence.reverse() return sequence |