Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/db/directory.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-11-02 12:16:48 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-11-02 12:16:48 (GMT)
commit1eff810db0c62174e8d445f15e4b1604665ac18d (patch)
tree53955ffeb020e12e0c47d347ef8d3f2028a08de7 /sugar_network/db/directory.py
parentbff48d640dbd44d614245f016d8fed29d9665fbc (diff)
Not only original authors can upload new implementations
Diffstat (limited to 'sugar_network/db/directory.py')
-rw-r--r--sugar_network/db/directory.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/sugar_network/db/directory.py b/sugar_network/db/directory.py
index 86afed2..6bb2d70 100644
--- a/sugar_network/db/directory.py
+++ b/sugar_network/db/directory.py
@@ -225,6 +225,25 @@ class Directory(object):
self.commit()
self.checkpoint()
+ def patch(self, guid, props, accept_language=None):
+ if not accept_language:
+ accept_language = toolkit.default_lang()
+ orig = self.get(guid)
+ patch = {}
+ for prop, value in (props or {}).items():
+ if orig[prop] == value:
+ continue
+ if isinstance(self.metadata[prop], StoredProperty) and \
+ self.metadata[prop].localized:
+ if isinstance(value, dict):
+ orig_value = dict([(i, orig[prop].get(i)) for i in value])
+ if orig_value == value:
+ continue
+ elif orig.get(prop, accept_language) == value:
+ continue
+ patch[prop] = value
+ return patch
+
def diff(self, seq, exclude_seq=None, **params):
if exclude_seq is None:
exclude_seq = []