From b201bae900e0074aa0e9bf83e3ad00a4df8e4e59 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 15 Sep 2014 12:51:01 +0530 Subject: [PATCH] [minor] copy_doc ignore_no_copy --- frappe/__init__.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 24dbb5030c..88bfbb7ddc 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -549,9 +549,15 @@ def import_doc(path, ignore_links=False, ignore_insert=False, insert=False): from frappe.core.page.data_import_tool import data_import_tool data_import_tool.import_doc(path, ignore_links=ignore_links, ignore_insert=ignore_insert, insert=insert) -def copy_doc(doc): +def copy_doc(doc, ignore_no_copy=True): """ No_copy fields also get copied.""" import copy + + def remove_no_copy_fields(d): + for df in d.meta.get("fields", {"no_copy": 1}): + if hasattr(d, df.fieldname): + d.set(df.fieldname, None) + if not isinstance(doc, dict): d = doc.as_dict() else: @@ -564,12 +570,18 @@ def copy_doc(doc): newdoc.creation = None newdoc.amended_from = None newdoc.amendment_date = None + if not ignore_no_copy: + remove_no_copy_fields(newdoc) + for d in newdoc.get_all_children(): d.name = None d.parent = None d.set("__islocal", 1) d.owner = None d.creation = None + if not ignore_no_copy: + remove_no_copy_fields(d) + return newdoc def compare(val1, condition, val2):