From 911846368f2a09b086fddca431ca9b5bd4dc3284 Mon Sep 17 00:00:00 2001 From: Niraj Gautam Date: Tue, 27 Feb 2024 22:07:22 +0530 Subject: [PATCH] feat: Add doc rename hook in server script (#25085) * feat: Add doc rename hook in server script * feat: Add test case for doc event in server script --- .../doctype/server_script/server_script.json | 12 +++++---- .../doctype/server_script/server_script.py | 2 ++ .../server_script/server_script_utils.py | 2 ++ .../server_script/test_server_script.py | 26 +++++++++++++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/frappe/core/doctype/server_script/server_script.json b/frappe/core/doctype/server_script/server_script.json index 295289184a..f081b846f3 100644 --- a/frappe/core/doctype/server_script/server_script.json +++ b/frappe/core/doctype/server_script/server_script.json @@ -49,14 +49,15 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Reference Document Type", - "options": "DocType" + "options": "DocType", + "search_index": 1 }, { "depends_on": "eval:doc.script_type==='DocType Event'", "fieldname": "doctype_event", "fieldtype": "Select", "label": "DocType Event", - "options": "Before Insert\nBefore Validate\nBefore Save\nAfter Insert\nAfter Save\nBefore Submit\nAfter Submit\nBefore Cancel\nAfter Cancel\nBefore Delete\nAfter Delete\nBefore Save (Submitted Document)\nAfter Save (Submitted Document)\nOn Payment Authorization\nOn Payment Paid\nOn Payment Failed" + "options": "Before Insert\nBefore Validate\nBefore Save\nAfter Insert\nAfter Save\nBefore Rename\nAfter Rename\nBefore Submit\nAfter Submit\nBefore Cancel\nAfter Cancel\nBefore Delete\nAfter Delete\nBefore Save (Submitted Document)\nAfter Save (Submitted Document)\nOn Payment Authorization\nOn Payment Paid\nOn Payment Failed" }, { "depends_on": "eval:doc.script_type==='API'", @@ -106,7 +107,8 @@ "fieldname": "module", "fieldtype": "Link", "label": "Module (for export)", - "options": "Module Def" + "options": "Module Def", + "search_index": 1 }, { "depends_on": "eval:doc.script_type==='API'", @@ -149,7 +151,7 @@ "link_fieldname": "server_script" } ], - "modified": "2024-02-06 07:09:45.478533", + "modified": "2024-02-27 11:44:46.397495", "modified_by": "Administrator", "module": "Core", "name": "Server Script", @@ -173,4 +175,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} +} \ No newline at end of file diff --git a/frappe/core/doctype/server_script/server_script.py b/frappe/core/doctype/server_script/server_script.py index 65cd20af1d..fbfa368641 100644 --- a/frappe/core/doctype/server_script/server_script.py +++ b/frappe/core/doctype/server_script/server_script.py @@ -36,6 +36,8 @@ class ServerScript(Document): "Before Save", "After Insert", "After Save", + "Before Rename", + "After Rename", "Before Submit", "After Submit", "Before Cancel", diff --git a/frappe/core/doctype/server_script/server_script_utils.py b/frappe/core/doctype/server_script/server_script_utils.py index 869084f841..c5e1b2c9b3 100644 --- a/frappe/core/doctype/server_script/server_script_utils.py +++ b/frappe/core/doctype/server_script/server_script_utils.py @@ -9,6 +9,8 @@ EVENT_MAP = { "before_validate": "Before Validate", "validate": "Before Save", "on_update": "After Save", + "before_rename": "Before Rename", + "after_rename": "After Rename", "before_submit": "Before Submit", "on_submit": "After Submit", "before_cancel": "Before Cancel", diff --git a/frappe/core/doctype/server_script/test_server_script.py b/frappe/core/doctype/server_script/test_server_script.py index caca5fd858..3dd8d092cf 100644 --- a/frappe/core/doctype/server_script/test_server_script.py +++ b/frappe/core/doctype/server_script/test_server_script.py @@ -82,6 +82,26 @@ frappe.db.commit() disabled=1, script=""" frappe.db.add_index("Todo", ["color", "date"]) +""", + ), + dict( + name="test_before_rename", + script_type="DocType Event", + doctype_event="After Rename", + reference_doctype="Role", + script=""" +doc.desk_access =0 +doc.save() +""", + ), + dict( + name="test_after_rename", + script_type="DocType Event", + doctype_event="After Rename", + reference_doctype="Role", + script=""" +doc.disabled =1 +doc.save() """, ), ] @@ -121,6 +141,12 @@ class TestServerScript(FrappeTestCase): frappe.ValidationError, frappe.get_doc(doctype="ToDo", description="validate me").insert ) + role = frappe.get_doc(doctype="Role", role_name="_Test Role 9").insert(ignore_if_duplicate=True) + role.rename("_Test Role 10") + role.reload() + self.assertEqual(role.disabled, 1) + self.assertEqual(role.desk_access, 0) + def test_api(self): response = requests.post(get_site_url(frappe.local.site) + "/api/method/test_server_script") self.assertEqual(response.status_code, 200)