From 3bfb3b5b8a2553918a76752aecdbde64ed88085e Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 May 2013 18:03:36 +0530 Subject: [PATCH] [updates][data-import] call validate after importing child tables data --- .../page/data_import_tool/data_import_tool.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/core/page/data_import_tool/data_import_tool.py b/core/page/data_import_tool/data_import_tool.py index 83a79c5281..459a461b73 100644 --- a/core/page/data_import_tool/data_import_tool.py +++ b/core/page/data_import_tool/data_import_tool.py @@ -202,6 +202,7 @@ def upload(): ret = [] error = False + parent_list = [] for i, row in enumerate(data): # bypass empty rows if not row: continue @@ -223,6 +224,7 @@ def upload(): doc.save() ret.append('Inserted row for %s at #%s' % (getlink(parenttype, doc.parent), unicode(doc.idx))) + parent_list.append(doc.parent) else: ret.append(import_doc(d, doctype, overwrite, row_idx, params.get("_submit"))) except Exception, e: @@ -231,6 +233,8 @@ def upload(): len(row)>1 and row[1] or "", cstr(e))) webnotes.errprint(webnotes.getTraceback()) + ret, error = validate_parent(parent_list, parenttype, ret, error) + if error: webnotes.conn.rollback() else: @@ -240,6 +244,21 @@ def upload(): return {"messages": ret, "error": error} +def validate_parent(parent_list, parenttype, ret, error): + if parent_list: + parent_list = list(set(parent_list)) + for p in parent_list: + try: + obj = webnotes.bean(parenttype, p) + obj.run_method("validate") + obj.run_method("on_update") + except Exception, e: + error = True + ret.append('Validation Error for %s %s: %s' % (parenttype, p, cstr(e))) + webnotes.errprint(webnotes.getTraceback()) + + return ret, error + def get_parent_field(doctype, parenttype): parentfield = None