diff --git a/webnotes/client.py b/webnotes/client.py index eab6c2c4db..b5b8cbf686 100644 --- a/webnotes/client.py +++ b/webnotes/client.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import webnotes from webnotes import _ import webnotes.model +import webnotes.utils import json @webnotes.whitelist() @@ -94,3 +95,22 @@ def make_width_property_setter(): bean = webnotes.bean(doclist) bean.ignore_permissions = True bean.insert() + +@webnotes.whitelist() +def bulk_update(docs): + docs = json.loads(docs) + failed_docs = [] + for doc in docs: + try: + ddoc = {key: val for key, val in doc.iteritems() if key not in ['doctype', 'docname']} + doctype = doc['doctype'] + docname = doc['docname'] + bean = webnotes.bean(doctype, docname) + bean.doc.update(ddoc) + bean.save() + except: + failed_docs.append({ + 'doc': doc, + 'exc': webnotes.utils.getTraceback() + }) + return {'failed_docs': failed_docs} diff --git a/webnotes/model/doc.py b/webnotes/model/doc.py index ca63e1537c..fba0680178 100755 --- a/webnotes/model/doc.py +++ b/webnotes/model/doc.py @@ -181,6 +181,10 @@ class Document: def get(self, name, value=None): return self.fields.get(name, value) + def update(self, d): + self.fields.update(d) + return self + def insert(self): self.fields['__islocal'] = 1 self.save()