elif self.direction == PropertyLoader.LEFT:
uowcommit.register_dependency(self.parent, self.mapper)
uowcommit.register_processor(self.parent, False, self, self.parent, False)
- uowcommit.register_processor(self.mapper, False, self, self.parent, True)
+ uowcommit.register_processor(self.parent, False, self, self.parent, True)
elif self.direction == PropertyLoader.RIGHT:
uowcommit.register_dependency(self.mapper, self.parent)
uowcommit.register_processor(self.mapper, False, self, self.parent, False)
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
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)
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 = []
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. """
try:
return objecttotask[obj]
except KeyError:
- t = UOWTask(self.mapper)
+ t = UOWTask(trans, self.mapper)
objecttotask[obj] = t
return t
try:
l = dp[(processor, isdelete)]
except KeyError:
- l = UOWTask(None)
+ l = UOWTask(trans, None)
dp[(processor, isdelete)] = l
return l
t2 = make_task_tree(n, t)
return t
- t = UOWTask(self.mapper)
+ t = UOWTask(trans, self.mapper)
make_task_tree(head, t)
return t