From d73e8cf915076e5d82f2420528ad9873fb309dad Mon Sep 17 00:00:00 2001 From: Ramin Yaghoubzadeh <ryaghoubzadeh@uni-bielefeld.de> Date: Wed, 8 Apr 2015 13:58:20 +0200 Subject: [PATCH] Python: batch updates: updates invalidate older removals and vice versa --- ipaacalib/python/src/ipaaca/payload.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ipaacalib/python/src/ipaaca/payload.py b/ipaacalib/python/src/ipaaca/payload.py index 054165a..f7e750d 100644 --- a/ipaacalib/python/src/ipaaca/payload.py +++ b/ipaacalib/python/src/ipaaca/payload.py @@ -96,6 +96,8 @@ class Payload(dict): else: # Collect additions/modifications self._batch_update_writer_name = writer_name self._collected_modifications[k] = v + # revoke deletion of item since a new version has been added + self._collected_removals = [i for i in self._collected_removals if i!=k] return dict.__setitem__(self, k, v) def __delitem__(self, k, writer_name=None): @@ -110,6 +112,8 @@ class Payload(dict): else: # Collect additions/modifications self._batch_update_writer_name = writer_name self._collected_removals.append(k) + # revoke older update of item since more recent changes take precedence + if k in self._collected_modifications: del self._collected_modifications[k] return dict.__delitem__(self, k) # Context-manager based batch updates, not thread-safe (on remote updates) -- GitLab