summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/associationproxy.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-05-03 18:22:31 +0000
committerJason Kirtland <jek@discorporate.us>2007-05-03 18:22:31 +0000
commit5606c01d391aebca903029c5a8882ea964adc566 (patch)
tree571f31edd61995adbfedbad7137ca1d5e024dc2e /lib/sqlalchemy/ext/associationproxy.py
parent300d1d2c136462201c79ff19cb6b8c2bbc0c8dfd (diff)
downloadsqlalchemy-5606c01d391aebca903029c5a8882ea964adc566.tar.gz
- Test assoc proxy lazy loads, fixed __set__ race on single scalar assocs
Diffstat (limited to 'lib/sqlalchemy/ext/associationproxy.py')
-rw-r--r--lib/sqlalchemy/ext/associationproxy.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py
index 0913d6c48..d86297bc1 100644
--- a/lib/sqlalchemy/ext/associationproxy.py
+++ b/lib/sqlalchemy/ext/associationproxy.py
@@ -114,13 +114,15 @@ class AssociationProxy(object):
return self._get_property().mapper.class_
target_class = property(_target_class)
+ def _target_is_scalar(self):
+ return not self._get_property().uselist
def __get__(self, obj, class_):
if obj is None:
self.owning_class = class_
return
elif self.scalar is None:
- self.scalar = not self._get_property().uselist
+ self.scalar = self._target_is_scalar()
if self.scalar:
return getattr(getattr(obj, self.target_collection), self.value_attr)
@@ -133,6 +135,9 @@ class AssociationProxy(object):
return proxy
def __set__(self, obj, values):
+ if self.scalar is None:
+ self.scalar = self._target_is_scalar()
+
if self.scalar:
creator = self.creator and self.creator or self.target_class
target = getattr(obj, self.target_collection)