From 68b367e67762813c5ddd568f9bc66fa7c09d9d95 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 22 Oct 2013 16:02:51 +0530 Subject: [PATCH] add bulk update to client --- webnotes/client.py | 20 ++++++++++++++++++++ webnotes/model/doc.py | 4 ++++ 2 files changed, 24 insertions(+) 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()