summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/dynamic.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-07 16:31:12 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-07 16:31:12 +0000
commit3715e10bf82786920bf8c018a99221f0d1713b3d (patch)
tree6d8f6ce6430751d00f77330635ea2bc4aa69de9d /lib/sqlalchemy/orm/dynamic.py
parent7ca47975377e3c64c734cae946708a2bdfb665c2 (diff)
downloadsqlalchemy-3715e10bf82786920bf8c018a99221f0d1713b3d.tar.gz
- also with dynamic, implemented correct count() behavior as well
as other helper methods.
Diffstat (limited to 'lib/sqlalchemy/orm/dynamic.py')
-rw-r--r--lib/sqlalchemy/orm/dynamic.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/dynamic.py b/lib/sqlalchemy/orm/dynamic.py
index f5662a933..e55703c42 100644
--- a/lib/sqlalchemy/orm/dynamic.py
+++ b/lib/sqlalchemy/orm/dynamic.py
@@ -74,7 +74,11 @@ class AppenderQuery(Query):
return None
else:
return sess
-
+
+ def _get_session(self):
+ return self.__session()
+ session = property(_get_session)
+
def __iter__(self):
sess = self.__session()
if sess is None:
@@ -88,7 +92,14 @@ class AppenderQuery(Query):
return self.attr.get_history(self.state, passive=True)._added_items.__getitem__(index)
else:
return self._clone(sess).__getitem__(index)
-
+
+ def count(self):
+ sess = self.__session()
+ if sess is None:
+ return len(self.attr.get_history(self.state, passive=True)._added_items)
+ else:
+ return self._clone(sess).count()
+
def _clone(self, sess=None):
# note we're returning an entirely new Query class instance here
# without any assignment capabilities;