From 33dbf97db27b08da270da7672dd15ba53e8fbdac Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Mon, 28 Apr 2025 18:09:30 +0530 Subject: [PATCH] fix(document): don't try to overwrite name if a string is already set This allows us to pass `name` in via API when creating documents. Signed-off-by: Akhil Narang --- frappe/api/v1.py | 2 ++ frappe/api/v2.py | 2 ++ frappe/model/document.py | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frappe/api/v1.py b/frappe/api/v1.py index 0006e5e5d5..20cf06eb35 100644 --- a/frappe/api/v1.py +++ b/frappe/api/v1.py @@ -39,6 +39,8 @@ def handle_rpc_call(method: str): def create_doc(doctype: str): data = get_request_form_data() data.pop("doctype", None) + if (name := data.get("name")) and isinstance(name, str): + frappe.flags.api_name_set = True return frappe.new_doc(doctype, **data).insert() diff --git a/frappe/api/v2.py b/frappe/api/v2.py index a3b91110cd..3733066e79 100644 --- a/frappe/api/v2.py +++ b/frappe/api/v2.py @@ -89,6 +89,8 @@ def count(doctype: str) -> int: def create_doc(doctype: str): data = frappe.form_dict data.pop("doctype", None) + if (name := data.get("name")) and isinstance(name, str): + frappe.flags.api_name_set = True return frappe.new_doc(doctype, **data).insert() diff --git a/frappe/model/document.py b/frappe/model/document.py index ee39426e87..c37bb4b7a0 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -646,7 +646,7 @@ class Document(BaseDocument, DocRef): def set_new_name(self, force=False, set_name=None, set_child_names=True): """Calls `frappe.naming.set_new_name` for parent and child docs.""" - if self.flags.name_set and not force: + if (frappe.flags.api_name_set or self.flags.name_set) and not force: return autoname = self.meta.autoname or ""