Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2014-04-29 06:35:16 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2014-04-29 06:35:16 (GMT)
commitfe07c5f9f1da79059f8fcd5e33e0f043b7cc6814 (patch)
tree241c22d3d947ae05bf16c53505be9cdabc99d70e /sugar_network
parent8ed5799f7d891b8d09ffdc298368f93382ddea5b (diff)
While patching, place all props into Resource object
Diffstat (limited to 'sugar_network')
-rw-r--r--sugar_network/db/directory.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/sugar_network/db/directory.py b/sugar_network/db/directory.py
index 79e7332..73aac90 100644
--- a/sugar_network/db/directory.py
+++ b/sugar_network/db/directory.py
@@ -231,20 +231,23 @@ class Directory(object):
def patch(self, guid, patch, seqno=False):
"""Apply changes for documents."""
doc = self.resource(guid, self._storage.get(guid))
- merged = False
+ merge = []
for prop, meta in patch.items():
orig_meta = doc.meta(prop)
if orig_meta and orig_meta['mtime'] >= meta['mtime']:
continue
+ doc.posts[prop] = meta['value']
+ merge.append((prop, meta))
+
+ for prop, meta in merge:
if doc.post_seqno is None and seqno is not False:
if not seqno:
seqno = self._seqno.next()
doc.post_seqno = seqno
doc.post(prop, **meta)
- merged = True
- if merged and doc.exists:
+ if merge and doc.exists:
# No need in after-merge event, further commit event
# is enough to avoid increasing events flow
self._index.store(guid, doc.posts, self._preindex)