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 <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2025-04-28 18:09:30 +05:30
parent f242b34ef2
commit 33dbf97db2
No known key found for this signature in database
GPG key ID: 9DCC61E211BF645F
3 changed files with 5 additions and 1 deletions

View file

@ -39,6 +39,8 @@ def handle_rpc_call(method: str):
def create_doc(doctype: str): def create_doc(doctype: str):
data = get_request_form_data() data = get_request_form_data()
data.pop("doctype", None) 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() return frappe.new_doc(doctype, **data).insert()

View file

@ -89,6 +89,8 @@ def count(doctype: str) -> int:
def create_doc(doctype: str): def create_doc(doctype: str):
data = frappe.form_dict data = frappe.form_dict
data.pop("doctype", None) 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() return frappe.new_doc(doctype, **data).insert()

View file

@ -646,7 +646,7 @@ class Document(BaseDocument, DocRef):
def set_new_name(self, force=False, set_name=None, set_child_names=True): 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.""" """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 return
autoname = self.meta.autoname or "" autoname = self.meta.autoname or ""