diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index 6d890a6736..828a28a075 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -93,20 +93,23 @@ class Report(Document): doc.prepared_report = 0 def on_trash(self): - if ( - self.is_standard == "Yes" - and not cint(getattr(frappe.local.conf, "developer_mode", 0)) - and not frappe.flags.in_migrate - and not frappe.flags.in_patch - ): - frappe.throw(_("You are not allowed to delete Standard Report")) + if self.is_standard == "Yes": + if ( + not cint(getattr(frappe.local.conf, "developer_mode", 0)) + and not frappe.flags.in_migrate + and not frappe.flags.in_patch + ): + frappe.throw(_("You are not allowed to delete Standard Report")) + + if frappe.conf.developer_mode and not frappe.flags.in_test: + frappe.db.after_commit(self.delete_report_folder) + delete_custom_role("report", self.name) - def after_delete(self): + def delete_report_folder(self): from frappe.modules.export_file import delete_folder - if not frappe.flags.in_test and frappe.conf.developer_mode: - delete_folder(self.module, "Report", self.name) + delete_folder(self.module, "Report", self.name) def get_permission_log_options(self, event=None): return {"fields": ["roles"]} diff --git a/frappe/email/doctype/notification/notification.py b/frappe/email/doctype/notification/notification.py index 04fc726272..3a800c6311 100644 --- a/frappe/email/doctype/notification/notification.py +++ b/frappe/email/doctype/notification/notification.py @@ -721,23 +721,22 @@ def get_context(context): self.message = self.get_template(md_as_html=True) def on_trash(self): - # Prevent deletion of standard notifications outside developer mode to avoid restoration during migration - if ( - self.is_standard - and not frappe.conf.developer_mode - and not frappe.flags.in_migrate - and not frappe.flags.in_patch - ): - frappe.throw( - _("You are not allowed to delete a standard Notification. You can disable it instead.") - ) + if self.is_standard: + # Prevent deletion of standard notifications outside developer mode to avoid restoration during migration + if not frappe.conf.developer_mode and not frappe.flags.in_migrate and not frappe.flags.in_patch: + frappe.throw( + _("You are not allowed to delete a standard Notification. You can disable it instead.") + ) + + if frappe.conf.developer_mode and not frappe.flags.in_test: + frappe.db.after_commit(self.delete_notification_folder) + clear_notification_cache() - def after_delete(self): + def delete_notification_folder(self): from frappe.modules.export_file import delete_folder - if not frappe.flags.in_test and frappe.conf.developer_mode: - delete_folder(self.module, "Notification", self.name) + delete_folder(self.module, "Notification", self.name) def clear_notification_cache():