diff --git a/frappe/hooks.py b/frappe/hooks.py index 4895c97200..be1b0134c1 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -221,7 +221,8 @@ scheduler_events = { "frappe.deferred_insert.save_to_db", "frappe.desk.form.document_follow.send_hourly_updates", "frappe.integrations.doctype.google_calendar.google_calendar.sync", - "frappe.email.doctype.newsletter.newsletter.send_scheduled_email" + "frappe.email.doctype.newsletter.newsletter.send_scheduled_email", + "frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request.process_data_deletion_request" ], "daily": [ "frappe.email.queue.set_expiry_for_email_queue", @@ -240,8 +241,7 @@ scheduler_events = { "frappe.automation.doctype.auto_repeat.auto_repeat.set_auto_repeat_as_completed", "frappe.email.doctype.unhandled_email.unhandled_email.remove_old_unhandled_emails", "frappe.core.doctype.prepared_report.prepared_report.delete_expired_prepared_reports", - "frappe.core.doctype.log_settings.log_settings.run_log_clean_up", - "frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request.process_data_deletion_request" + "frappe.core.doctype.log_settings.log_settings.run_log_clean_up" ], "daily_long": [ "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_daily", diff --git a/frappe/patches.txt b/frappe/patches.txt index c889d9a4da..a666480c90 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -197,3 +197,4 @@ frappe.patches.v14_0.copy_mail_data #08.03.21 frappe.patches.v14_0.update_github_endpoints #08-11-2021 frappe.patches.v14_0.remove_db_aggregation frappe.patches.v14_0.update_color_names_in_kanban_board_column +frappe.patches.v14_0.update_auto_account_deletion_duration diff --git a/frappe/patches/v14_0/update_auto_account_deletion_duration.py b/frappe/patches/v14_0/update_auto_account_deletion_duration.py new file mode 100644 index 0000000000..74957066e6 --- /dev/null +++ b/frappe/patches/v14_0/update_auto_account_deletion_duration.py @@ -0,0 +1,5 @@ +import frappe + +def execute(): + days = frappe.db.get_single_value("Website Settings", "auto_account_deletion") + frappe.db.set_value("Website Settings", None, "auto_account_deletion", days * 24) 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 3699cdfbbd..e2f583fd48 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 @@ -7,7 +7,7 @@ import re import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import get_fullname, date_diff, get_datetime +from frappe.utils import get_fullname, time_diff_in_hours, get_datetime from frappe.utils.user import get_system_managers from frappe.utils.verified_command import get_signed_params, verify_request import json @@ -353,8 +353,8 @@ def process_data_deletion_request(): for request in requests: doc = frappe.get_doc("Personal Data Deletion Request", request) - if date_diff(get_datetime(), doc.creation) >= auto_account_deletion: - doc.add_comment("Comment", _("The User record for this request has been auto-deleted due to inactivity.")) + if time_diff_in_hours(get_datetime(), doc.creation) >= auto_account_deletion: + doc.add_comment("Comment", _("The User record for this request has been auto-deleted due to inactivity by system admins.")) doc.trigger_data_deletion() def remove_unverified_record(): diff --git a/frappe/website/doctype/personal_data_deletion_request/test_personal_data_deletion_request.py b/frappe/website/doctype/personal_data_deletion_request/test_personal_data_deletion_request.py index 27dcfe5858..675a891130 100644 --- a/frappe/website/doctype/personal_data_deletion_request/test_personal_data_deletion_request.py +++ b/frappe/website/doctype/personal_data_deletion_request/test_personal_data_deletion_request.py @@ -4,10 +4,10 @@ import frappe import unittest from frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request import ( - remove_unverified_record, + remove_unverified_record, process_data_deletion_request ) from frappe.website.doctype.personal_data_download_request.test_personal_data_download_request import ( - create_user_if_not_exists, + create_user_if_not_exists ) from datetime import datetime, timedelta @@ -58,3 +58,15 @@ class TestPersonalDataDeletionRequest(unittest.TestCase): self.assertFalse( frappe.db.exists("Personal Data Deletion Request", self.delete_request.name) ) + + def test_process_auto_request(self): + frappe.db.set_value("Website Settings", None, "auto_account_deletion", "1") + date_time_obj = datetime.strptime( + self.delete_request.creation, "%Y-%m-%d %H:%M:%S.%f" + ) + timedelta(hours=-2) + self.delete_request.db_set("creation", date_time_obj) + self.delete_request.db_set("status", "Pending Approval") + + process_data_deletion_request() + self.delete_request.reload() + self.assertEqual(self.delete_request.status, "Deleted") diff --git a/frappe/website/doctype/website_settings/website_settings.json b/frappe/website/doctype/website_settings/website_settings.json index 2a6b3dc1fb..3b199a4b58 100644 --- a/frappe/website/doctype/website_settings/website_settings.json +++ b/frappe/website/doctype/website_settings/website_settings.json @@ -404,10 +404,10 @@ "label": "Show Account Deletion Link in My Account Page" }, { - "default": "3", + "default": "72", "fieldname": "auto_account_deletion", "fieldtype": "Int", - "label": "Auto Account Deletion within (Days)" + "label": "Auto Account Deletion within (Hours)" }, { "fieldname": "footer_powered", @@ -421,7 +421,7 @@ "issingle": 1, "links": [], "max_attachments": 10, - "modified": "2022-02-28 23:05:42.493192", + "modified": "2022-02-24 15:37:22.360138", "modified_by": "Administrator", "module": "Website", "name": "Website Settings", @@ -446,4 +446,4 @@ "sort_order": "ASC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js b/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js index 1b9e9ad79b..731fe29cef 100644 --- a/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js +++ b/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js @@ -5,7 +5,7 @@ frappe.ready(function() { callback: (data) => { if (data.message) { const intro_wrapper = $('#introduction .ql-editor.read-mode'); - const sla_description = __("Note: Your request for account deletion will be fulfilled within {0} days.", [data.message]); + const sla_description = __("Note: Your request for account deletion will be fulfilled within {0} hours.", [data.message]); const sla_description_wrapper = `
${sla_description}`; intro_wrapper.html(intro_wrapper.html() + sla_description_wrapper); }