From 49c66c4d9f7d8e2c39da04af2a6237949bc60f1c Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Fri, 27 Sep 2024 18:30:35 +0200 Subject: [PATCH] feat: redirect to new form if it has been renamed --- frappe/model/rename_doc.py | 9 +++++++++ frappe/public/js/frappe/form/form.js | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index b1280dc524..4c5d6079a7 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -229,6 +229,15 @@ def rename_doc( indicator="green", ) + # let people watching the old form know that it has been renamed + frappe.publish_realtime( + event="doc_rename", + message={"doctype": doctype, "old": old, "new": new}, + doctype=doctype, + docname=old, + after_commit=True, + ) + return new diff --git a/frappe/public/js/frappe/form/form.js b/frappe/public/js/frappe/form/form.js index 3468da490c..466754261e 100644 --- a/frappe/public/js/frappe/form/form.js +++ b/frappe/public/js/frappe/form/form.js @@ -333,6 +333,14 @@ frappe.ui.form.Form = class FrappeForm { $(document).on("rename", (ev, dt, old_name, new_name) => { if (dt == this.doctype) this.rename_notify(dt, old_name, new_name); }); + + frappe.realtime.on("doc_rename", (data) => { + // the current form has been renamed by some backend process + if (data.doctype == this.doctype && data.old == this.docname) { + // the current form does not exist anymore, route to the new one + frappe.set_route("Form", this.doctype, data.new); + } + }); } setup_file_drop() {