diff --git a/frappe/model/naming.py b/frappe/model/naming.py index e5f54a5f75..782c88a91d 100644 --- a/frappe/model/naming.py +++ b/frappe/model/naming.py @@ -13,8 +13,6 @@ def set_new_name(doc): doc._new_name_set = True autoname = frappe.get_meta(doc.doctype).autoname - doc.localname = doc.name # for passing back to client - doc.name = None # amendments if getattr(doc, "amended_from", None): @@ -24,7 +22,7 @@ def set_new_name(doc): if tmp and not isinstance(tmp, basestring): # autoname in a function, not a property doc.autoname() - if doc.name and doc.localname != doc.name: + if doc.name: return # based on a field diff --git a/frappe/widgets/form/save.py b/frappe/widgets/form/save.py index af6890ed96..f1c79d499e 100644 --- a/frappe/widgets/form/save.py +++ b/frappe/widgets/form/save.py @@ -9,6 +9,7 @@ def savedocs(): """save / submit / update doclist""" try: doc = frappe.get_doc(json.loads(frappe.form_dict.doc)) + set_local_name(doc) # action doc.docstatus = {"Save":0, "Submit": 1, "Update": 1, "Cancel": 2}[frappe.form_dict.action] @@ -50,3 +51,15 @@ def send_updated_docs(doc): d["localname"] = doc.localname frappe.response.docs.append(d) + +def set_local_name(doc): + def _set_local_name(d): + if d.get('__islocal'): + d.localname = d.name + d.name = None + + _set_local_name(doc) + if doc.get('__islocal'): + for child in doc.get_all_children(): + _set_local_name(child) +