From 36e8ae112872db80e2f391d916acb04e1565225a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 3 Jan 2025 21:48:56 +0530 Subject: [PATCH] fix: do not allow to delete standard dropdown items --- crm/fcrm/doctype/fcrm_settings/fcrm_settings.py | 15 +++++++++++++++ .../src/components/Settings/GeneralSettings.vue | 14 +++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py index 08a0a4b7..cf983d6a 100644 --- a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py +++ b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py @@ -2,6 +2,7 @@ # For license information, please see license.txt import frappe +from frappe import _ from frappe.model.document import Document from crm.install import after_install @@ -12,6 +13,20 @@ class FCRMSettings(Document): def restore_defaults(self, force=False): after_install(force) + def validate(self): + self.do_not_allow_to_delete_if_standard() + + def do_not_allow_to_delete_if_standard(self): + if not self.has_value_changed("dropdown_items"): + return + old_items = self.get_doc_before_save().get("dropdown_items") + standard_new_items = [d.name1 for d in self.dropdown_items if d.is_standard] + standard_old_items = [d.name1 for d in old_items if d.is_standard] + deleted_standard_items = set(standard_old_items) - set(standard_new_items) + if deleted_standard_items: + frappe.throw(_("Cannot delete standard items {0}").format(", ".join(deleted_standard_items))) + + def after_migrate(): sync_table("dropdown_items", "standard_dropdown_items") diff --git a/frontend/src/components/Settings/GeneralSettings.vue b/frontend/src/components/Settings/GeneralSettings.vue index f590310a..cc70234a 100644 --- a/frontend/src/components/Settings/GeneralSettings.vue +++ b/frontend/src/components/Settings/GeneralSettings.vue @@ -106,28 +106,32 @@ -
+