summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/objectstore.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-10-23 00:05:03 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-10-23 00:05:03 +0000
commit21093b37abec98d6add61c5f7801a400490bed2f (patch)
treea78f58899d9bd41635e04199ed6dd650e1789d99 /lib/sqlalchemy/objectstore.py
parent8d60fc7e9f5187a6dec927e44905101d3d35aa24 (diff)
downloadsqlalchemy-21093b37abec98d6add61c5f7801a400490bed2f.tar.gz
Diffstat (limited to 'lib/sqlalchemy/objectstore.py')
-rw-r--r--lib/sqlalchemy/objectstore.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/sqlalchemy/objectstore.py b/lib/sqlalchemy/objectstore.py
index 3e216a768..59e639e61 100644
--- a/lib/sqlalchemy/objectstore.py
+++ b/lib/sqlalchemy/objectstore.py
@@ -297,7 +297,7 @@ class UOWTransaction(object):
try:
return self.tasks[mapper]
except KeyError:
- return self.tasks.setdefault(mapper, UOWTask(mapper))
+ return UOWTask(self, mapper)
def register_dependency(self, mapper, dependency):
self.dependencies[(mapper, dependency)] = True
@@ -363,7 +363,7 @@ class UOWTransaction(object):
return None
task = bymapper.get(node.item, None)
if task is None:
- task = UOWTask(node.item)
+ task = UOWTask(self, node.item)
bymapper[node.item] = task
if node.circular:
task.circular = task._sort_circular_dependencies(self)
@@ -394,7 +394,9 @@ class UOWTaskElement(object):
return "UOWTaskElement/%d: %s/%d %s" % (id(self), self.obj.__class__.__name__, id(self.obj), (self.listonly and 'listonly' or (self.isdelete and 'delete' or 'save')) )
class UOWTask(object):
- def __init__(self, mapper):
+ def __init__(self, uowtransaction, mapper):
+ uowtransaction.tasks[mapper] = self
+ self.uowtransaction = uowtransaction
self.mapper = mapper
self.objects = util.OrderedDict()
self.dependencies = []
@@ -423,7 +425,7 @@ class UOWTask(object):
rec.childtask = childtask
if isdelete:
rec.isdelete = True
-
+
def execute(self, trans):
"""executes this UOWTask. saves objects to be saved, processes all dependencies
that have been registered, and deletes objects to be deleted. """
@@ -475,7 +477,7 @@ class UOWTask(object):
try:
return objecttotask[obj]
except KeyError:
- t = UOWTask(self.mapper)
+ t = UOWTask(trans, self.mapper)
objecttotask[obj] = t
return t
@@ -489,7 +491,7 @@ class UOWTask(object):
try:
l = dp[(processor, isdelete)]
except KeyError:
- l = UOWTask(None)
+ l = UOWTask(trans, None)
dp[(processor, isdelete)] = l
return l
@@ -536,7 +538,7 @@ class UOWTask(object):
t2 = make_task_tree(n, t)
return t
- t = UOWTask(self.mapper)
+ t = UOWTask(trans, self.mapper)
make_task_tree(head, t)
return t