diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2013-11-02 12:16:48 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2013-11-02 12:16:48 (GMT) |
commit | 1eff810db0c62174e8d445f15e4b1604665ac18d (patch) | |
tree | 53955ffeb020e12e0c47d347ef8d3f2028a08de7 /sugar_network/db/directory.py | |
parent | bff48d640dbd44d614245f016d8fed29d9665fbc (diff) |
Not only original authors can upload new implementations
Diffstat (limited to 'sugar_network/db/directory.py')
-rw-r--r-- | sugar_network/db/directory.py | 19 |
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 = [] |