Skip to content

Commit d8fde81

Browse files
authored
fix: delete admin members using controller when user is deleted (#2299)
1 parent fb7b329 commit d8fde81

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

‎raven/raven/doctype/raven_user/raven_user.py‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,19 @@ def on_trash(self):
119119
"""
120120
Remove the Raven User from all channels
121121
"""
122-
frappe.db.delete("Raven Channel Member", {"user_id": self.user})
122+
# Delete all non-admin channel memberships.
123+
frappe.db.delete("Raven Channel Member", {"user_id": self.user, "is_admin": 0})
124+
125+
# Admin channel memberships need to be deleted manually since admins will be transferred
126+
channel_members = frappe.get_all(
127+
"Raven Channel Member", filters={"user_id": self.user, "is_admin": 1}
128+
)
129+
for channel_member in channel_members:
130+
frappe.delete_doc("Raven Channel Member", channel_member.name, ignore_permissions=True)
123131
# Workspace memberships link this doc; left behind they block the delete.
124-
frappe.db.delete("Raven Workspace Member", {"user": self.name})
132+
workspace_members = frappe.get_all("Raven Workspace Member", filters={"user": self.name})
133+
for workspace_member in workspace_members:
134+
frappe.delete_doc("Raven Workspace Member", workspace_member.name, ignore_permissions=True)
125135
# Raven Reminder.user links this doc by name (not the frappe user id)
126136
frappe.db.delete("Raven Reminder", {"user": self.name})
127137
# Scheduled messages are owned by the frappe user. Left behind, the sweep would

0 commit comments

Comments
 (0)