diff --git a/frappe/templates/emails/data_deletion_approval.html b/frappe/templates/emails/data_deletion_approval.html new file mode 100644 index 0000000000..2147a05437 --- /dev/null +++ b/frappe/templates/emails/data_deletion_approval.html @@ -0,0 +1,6 @@ +

{{_("User {0} has requested for data deletion").format(user)}}.

+

{{_("Click on the link below to approve the request")}}.

+ +

+ {{ _("Confirm Request") }} +

diff --git a/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py b/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py index 844b7ceb7b..b1c02dff58 100644 --- a/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py +++ b/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py @@ -35,6 +35,22 @@ class PersonalDataDeletionRequest(Document): header=[_("Confirm Deletion of Data"), "green"] ) + def notify_system_managers(self): + from frappe.utils.user import get_system_managers + system_managers = get_system_managers(only_name=True) + + frappe.sendmail( + recipients=system_managers, + subject=_("User {0} has requested for data deletion").format(self.email), + template="delete_deletion_approval", + args={ + 'user': self.email, + 'url': frappe.utils.get_url(self.get_url()) + }, + header=[_("Approval Required"), "green"] + ) + + def anonymize_data(self): """ mask user data with non identifiable data """ frappe.only_for('System Manager') @@ -97,6 +113,7 @@ def confirm_deletion(email, name, host_name): if doc.status == 'Pending Verification': doc.status = 'Pending Approval' doc.save(ignore_permissions=True) + doc.notify_system_managers(doc) frappe.db.commit() frappe.respond_as_web_page(_("Confirmed"), _("The process for deletion of {0} data associated with {1} has been initiated.").format(host_name, email),