From 98e6f6ae3ffedf71e096e1d5fd236fd7c97450ce Mon Sep 17 00:00:00 2001 From: sokumon Date: Thu, 4 Dec 2025 15:16:22 +0530 Subject: [PATCH] fix: delete desktop icon and sidebar when workspace is deleted --- frappe/desk/doctype/workspace/workspace.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/frappe/desk/doctype/workspace/workspace.py b/frappe/desk/doctype/workspace/workspace.py index c45b249cf7..40c75bc697 100644 --- a/frappe/desk/doctype/workspace/workspace.py +++ b/frappe/desk/doctype/workspace/workspace.py @@ -127,6 +127,8 @@ class Workspace(Document): def on_trash(self): if self.public and not is_workspace_manager(): frappe.throw(_("You need to be Workspace Manager to delete a public workspace.")) + self.delete_desktop_icon() + self.delete_workspace_sidebar() self.delete_from_my_workspaces() def delete_from_my_workspaces(self): @@ -143,6 +145,25 @@ class Workspace(Document): if self.module and frappe.conf.developer_mode: delete_folder(self.module, "Workspace", self.title) + def delete_desktop_icon(self): + if self.public: + desktop_icon = frappe.get_all( + "Desktop Icon", + filters=[{"link_type": "Workspace"}, {"link_to": self.name}], + limit=1, + pluck="name", + ) + if desktop_icon: + frappe.delete_doc("Desktop Icon", desktop_icon[0]) + + def delete_workspace_sidebar(self): + if self.public: + workspace_sidebar = frappe.get_all( + "Workspace Sidebar", filters=[{"name": self.name}], limit=1, pluck="name" + ) + if workspace_sidebar: + frappe.delete_doc("Workspace Sidebar", workspace_sidebar[0]) + @staticmethod def get_module_wise_workspaces(): workspaces = frappe.get_all(