fix: Rename document/update title via toolbar (update_document_title API) (#21404)
* fix: update_document_title * Fix broken socket event * Fix broken title + name doc update * fix: if only title updated then dont enqueue --------- Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
parent
1b0c2f03fa
commit
05893bef42
2 changed files with 26 additions and 16 deletions
|
|
@ -53,6 +53,7 @@ def update_document_title(
|
|||
# handle bad API usages
|
||||
merge = sbool(merge)
|
||||
enqueue = sbool(enqueue)
|
||||
action_enqueued = enqueue and not is_scheduler_inactive()
|
||||
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
doc.check_permission(permtype="write")
|
||||
|
|
@ -65,7 +66,7 @@ def update_document_title(
|
|||
name_updated = updated_name and (updated_name != doc.name)
|
||||
|
||||
if name_updated:
|
||||
if enqueue and not is_scheduler_inactive():
|
||||
if action_enqueued:
|
||||
current_name = doc.name
|
||||
|
||||
# before_name hook may have DocType specific validations or transformations
|
||||
|
|
@ -90,18 +91,27 @@ def update_document_title(
|
|||
doc.rename(updated_name, merge=merge)
|
||||
|
||||
if title_updated:
|
||||
try:
|
||||
setattr(doc, title_field, updated_title)
|
||||
doc.save()
|
||||
frappe.msgprint(_("Saved"), alert=True, indicator="green")
|
||||
except Exception as e:
|
||||
if frappe.db.is_duplicate_entry(e):
|
||||
frappe.throw(
|
||||
_("{0} {1} already exists").format(doctype, frappe.bold(docname)),
|
||||
title=_("Duplicate Name"),
|
||||
exc=frappe.DuplicateEntryError,
|
||||
)
|
||||
raise
|
||||
if action_enqueued and name_updated:
|
||||
frappe.enqueue(
|
||||
"frappe.client.set_value",
|
||||
doctype=doc.doctype,
|
||||
name=updated_name,
|
||||
fieldname=title_field,
|
||||
value=updated_title,
|
||||
)
|
||||
else:
|
||||
try:
|
||||
setattr(doc, title_field, updated_title)
|
||||
doc.save()
|
||||
frappe.msgprint(_("Saved"), alert=True, indicator="green")
|
||||
except Exception as e:
|
||||
if frappe.db.is_duplicate_entry(e):
|
||||
frappe.throw(
|
||||
_("{0} {1} already exists").format(doctype, frappe.bold(docname)),
|
||||
title=_("Duplicate Name"),
|
||||
exc=frappe.DuplicateEntryError,
|
||||
)
|
||||
raise
|
||||
|
||||
return doc.name
|
||||
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ frappe.ui.form.Toolbar = class Toolbar {
|
|||
}
|
||||
|
||||
let rename_document = () => {
|
||||
if (input_name != docname) frappe.socketio.doctype_subscribe(doctype, input_name);
|
||||
return frappe
|
||||
.xcall("frappe.model.rename_doc.update_document_title", {
|
||||
doctype,
|
||||
|
|
@ -129,9 +130,8 @@ frappe.ui.form.Toolbar = class Toolbar {
|
|||
};
|
||||
|
||||
// handle document renaming queued action
|
||||
if (input_name && new_docname == docname) {
|
||||
frappe.socketio.doc_subscribe(doctype, input_name);
|
||||
frappe.realtime.on("doc_update", (data) => {
|
||||
if (input_name != docname) {
|
||||
frappe.realtime.on("list_update", (data) => {
|
||||
if (data.doctype == doctype && data.name == input_name) {
|
||||
reload_form(input_name);
|
||||
frappe.show_alert({
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue