Commit 649a5769 authored by Julien Muchembled's avatar Julien Muchembled

Fix update of not yet indexed root simulation movements

parent 37cc2b2c
......@@ -169,17 +169,27 @@ class MovementCollectionUpdaterMixin:
movement.edit(**kw)
for property_id in kw:
movement.clearRecordedProperty(property_id)
for movement in movement_diff.getNewMovementList():
movement_list = movement_diff.getNewMovementList()
if not movement_list:
return
if context.isRootAppliedRule():
reindex_kw = {'activate_kw': {
'tag': 'built:' + context.getCausalityValue().getPath()}}
else:
reindex_kw = None
def newMovement(kw={}):
return context.newContent(portal_type=self.movement_type,
reindex_kw=reindex_kw, **kw)
for movement in movement_list:
d = movement.__dict__
assert movement.isTempObject()
if '_original' in d:
# slow but safe way (required for compensated movements)
context.newContent(portal_type=self.movement_type,
**_getPropertyAndCategoryList(movement))
newMovement(_getPropertyAndCategoryList(movement))
continue
# fast way (we had to make sure such optimization
# does not touch existing persistent data)
del movement.__dict__
movement = context.newContent(portal_type=self.movement_type)
movement = newMovement()
d.update(movement.__dict__)
movement.__dict__ = d
......@@ -715,10 +715,10 @@ return context.generatePredicate(
"""Check that simulation is indexed before being updated
It is important that an update of a simulation tree is able to find all
related simulation movements, otherwise the following happends:
node 1 node2 2
related simulation movements, otherwise the following happens:
node 1 node 2
start first indexing of SM ...
change simulation state of PL
change simulation state of PL
update simulation (no SM found)
commit result of indexing
-> SM has wrong simulation state
......@@ -733,7 +733,7 @@ return context.generatePredicate(
r, = self.portal.cmf_activity_sql_connection.manage_test(
'select * from message_queue')
self.assertEqual(r.method_id, '_updateSimulation')
expectedFailure(self.assertEqual)(r.processing_node, -1)
self.assertEqual(r.processing_node, -1)
def test_suite():
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment