From 87a4c038501f7a5de45b2fb7f07c9fcacdc32e96 Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Tue, 31 Dec 2024 19:35:55 +0530 Subject: [PATCH 1/6] fix: don't copy over API Key * anyways wasn't useful since password isn't copied --- frappe/core/doctype/user/user.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json index 540a122d86..940d083482 100644 --- a/frappe/core/doctype/user/user.json +++ b/frappe/core/doctype/user/user.json @@ -593,6 +593,7 @@ "fieldname": "api_key", "fieldtype": "Data", "label": "API Key", + "no_copy": 1, "permlevel": 1, "read_only": 1, "unique": 1 @@ -887,7 +888,7 @@ "link_fieldname": "user" } ], - "modified": "2024-09-27 11:41:13.336662", + "modified": "2024-12-31 19:35:17.052698", "modified_by": "Administrator", "module": "Core", "name": "User", From 1997c7ebacdc220d2725f362a5d208b289cc16bb Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Tue, 31 Dec 2024 22:23:29 +0530 Subject: [PATCH 2/6] fix(copy_doc): don't copy password fields * this leads to surprises! --- frappe/public/js/frappe/model/create_new.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 23bd43d663..3b757f94b3 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -294,7 +294,8 @@ $.extend(frappe.model, { df && key.substr(0, 2) != "__" && !no_copy_list.includes(key) && - !(df && !from_amend && cint(df.no_copy) == 1) + !(df && !from_amend && cint(df.no_copy) == 1) && + df.fieldtype !== "Password" ) { var value = doc[key] || []; if (frappe.model.table_fields.includes(df.fieldtype)) { From 7bfc94b7b0751445656fde8e4c5f0808a7d19056 Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Tue, 31 Dec 2024 22:27:12 +0530 Subject: [PATCH 3/6] refactor(copy_doc): replace `var` with let/const --- frappe/public/js/frappe/model/create_new.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 3b757f94b3..92d5f54f7d 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -283,12 +283,12 @@ $.extend(frappe.model, { }, copy_doc: function (doc, from_amend, parent_doc, parentfield) { - var no_copy_list = ["name", "amended_from", "amendment_date", "cancel_reason"]; - var newdoc = frappe.model.get_new_doc(doc.doctype, parent_doc, parentfield); + let no_copy_list = ["name", "amended_from", "amendment_date", "cancel_reason"]; + let newdoc = frappe.model.get_new_doc(doc.doctype, parent_doc, parentfield); - for (var key in doc) { - // dont copy name and blank fields - var df = frappe.meta.get_docfield(doc.doctype, key); + for (const key in doc) { + // don't copy name and blank fields + let df = frappe.meta.get_docfield(doc.doctype, key); if ( df && @@ -297,10 +297,10 @@ $.extend(frappe.model, { !(df && !from_amend && cint(df.no_copy) == 1) && df.fieldtype !== "Password" ) { - var value = doc[key] || []; + let value = doc[key] || []; if (frappe.model.table_fields.includes(df.fieldtype)) { - for (var i = 0, j = value.length; i < j; i++) { - var d = value[i]; + for (let i = 0, j = value.length; i < j; i++) { + let d = value[i]; frappe.model.copy_doc(d, from_amend, newdoc, df.fieldname); } } else { @@ -309,7 +309,7 @@ $.extend(frappe.model, { } } - var user = frappe.session.user; + let user = frappe.session.user; newdoc.__islocal = 1; newdoc.docstatus = 0; From 0095e86a6933ce5bd1695ff7a28002cdd896b5d6 Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Tue, 31 Dec 2024 22:30:06 +0530 Subject: [PATCH 4/6] fix: update deprecated string method --- frappe/public/js/frappe/model/create_new.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 92d5f54f7d..0975415e52 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -292,7 +292,7 @@ $.extend(frappe.model, { if ( df && - key.substr(0, 2) != "__" && + key.substring(0, 2) != "__" && !no_copy_list.includes(key) && !(df && !from_amend && cint(df.no_copy) == 1) && df.fieldtype !== "Password" From 88b854c859dd0c6810c0c5c5d18dc6c78e20ba84 Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Tue, 31 Dec 2024 22:32:50 +0530 Subject: [PATCH 5/6] fix: `const` -> `let` --- frappe/public/js/frappe/model/create_new.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 0975415e52..38c617bc4b 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -286,7 +286,7 @@ $.extend(frappe.model, { let no_copy_list = ["name", "amended_from", "amendment_date", "cancel_reason"]; let newdoc = frappe.model.get_new_doc(doc.doctype, parent_doc, parentfield); - for (const key in doc) { + for (let key in doc) { // don't copy name and blank fields let df = frappe.meta.get_docfield(doc.doctype, key); From ed64dd728e9307152dbd694c858f3a4d82fe2fdc Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Wed, 1 Jan 2025 07:15:12 +0530 Subject: [PATCH 6/6] refactor: clean up long conditional --- frappe/public/js/frappe/model/create_new.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 38c617bc4b..018e840b42 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -290,13 +290,12 @@ $.extend(frappe.model, { // don't copy name and blank fields let df = frappe.meta.get_docfield(doc.doctype, key); - if ( - df && - key.substring(0, 2) != "__" && - !no_copy_list.includes(key) && - !(df && !from_amend && cint(df.no_copy) == 1) && - df.fieldtype !== "Password" - ) { + const is_internal_field = key.substring(0, 2) === "__"; + const is_blocked_field = no_copy_list.includes(key); + const is_no_copy = !from_amend && df && cint(df.no_copy) == 1; + const is_password = df && df.fieldtype === "Password"; + + if (df && !is_internal_field && !is_blocked_field && !is_no_copy && !is_password) { let value = doc[key] || []; if (frappe.model.table_fields.includes(df.fieldtype)) { for (let i = 0, j = value.length; i < j; i++) {