@@ -241,7 +241,7 @@ scheduler_events = { | |||||
"frappe.email.doctype.unhandled_email.unhandled_email.remove_old_unhandled_emails", | "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.prepared_report.prepared_report.delete_expired_prepared_reports", | ||||
"frappe.core.doctype.log_settings.log_settings.run_log_clean_up", | "frappe.core.doctype.log_settings.log_settings.run_log_clean_up", | ||||
"frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request.update_sla" | |||||
"frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request.auto_delete" | |||||
], | ], | ||||
"daily_long": [ | "daily_long": [ | ||||
"frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_daily", | "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_daily", | ||||
@@ -18,13 +18,5 @@ frappe.ui.form.on("Personal Data Deletion Request", { | |||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
}, | |||||
before_load: function(frm) { | |||||
frappe.db.get_single_value("Website Settings", "account_deletion_sla").then((data) => { | |||||
if (data < 1) { | |||||
frm.set_df_property("sla_status", "hidden", 1); | |||||
} | |||||
}); | |||||
} | } | ||||
}); | }); |
@@ -7,9 +7,6 @@ | |||||
"field_order": [ | "field_order": [ | ||||
"email", | "email", | ||||
"status", | "status", | ||||
"column_break_3", | |||||
"sla_status", | |||||
"section_break_5", | |||||
"anonymization_matrix", | "anonymization_matrix", | ||||
"deletion_steps" | "deletion_steps" | ||||
], | ], | ||||
@@ -45,28 +42,10 @@ | |||||
"fieldtype": "Table", | "fieldtype": "Table", | ||||
"label": "Deletion Steps ", | "label": "Deletion Steps ", | ||||
"options": "Personal Data Deletion Step" | "options": "Personal Data Deletion Step" | ||||
}, | |||||
{ | |||||
"default": "Open", | |||||
"fieldname": "sla_status", | |||||
"fieldtype": "Select", | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "SLA Status", | |||||
"options": "Open\nFulfilled\nFailed", | |||||
"read_only": 1 | |||||
}, | |||||
{ | |||||
"fieldname": "column_break_3", | |||||
"fieldtype": "Column Break" | |||||
}, | |||||
{ | |||||
"fieldname": "section_break_5", | |||||
"fieldtype": "Section Break" | |||||
} | } | ||||
], | ], | ||||
"links": [], | "links": [], | ||||
"modified": "2021-12-07 10:48:06.194408", | |||||
"modified": "2021-12-15 19:34:22.280235", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Website", | "module": "Website", | ||||
"name": "Personal Data Deletion Request", | "name": "Personal Data Deletion Request", | ||||
@@ -280,12 +280,6 @@ class PersonalDataDeletionRequest(Document): | |||||
frappe.rename_doc("User", email, anon, force=True, show_alert=False) | frappe.rename_doc("User", email, anon, force=True, show_alert=False) | ||||
self.db_set("status", "Deleted") | self.db_set("status", "Deleted") | ||||
account_deletion_sla = frappe.db.get_single_value("Website Settings", "account_deletion_sla") | |||||
if account_deletion_sla > 0 and self.sla_status == "Open": | |||||
if date_diff(get_datetime(), self.creation) > account_deletion_sla: | |||||
self.db_set("sla_status", "Failed") | |||||
elif date_diff(get_datetime(), self.creation) <= account_deletion_sla: | |||||
self.db_set("sla_status", "Fulfilled") | |||||
if commit: | if commit: | ||||
frappe.db.commit() | frappe.db.commit() | ||||
@@ -351,20 +345,20 @@ def remove_unverified_record(): | |||||
AND `creation` < (NOW() - INTERVAL '7' DAY)""" | AND `creation` < (NOW() - INTERVAL '7' DAY)""" | ||||
) | ) | ||||
def update_sla(): | |||||
account_deletion_sla = frappe.db.get_single_value("Website Settings", "account_deletion_sla") | |||||
if account_deletion_sla < 1: | |||||
def auto_delete(): | |||||
auto_account_deletion = frappe.db.get_single_value("Website Settings", "auto_account_deletion") | |||||
if auto_account_deletion < 1: | |||||
return | return | ||||
requests = frappe.get_all("Personal Data Deletion Request", | requests = frappe.get_all("Personal Data Deletion Request", | ||||
filters = { | filters = { | ||||
"sla_status": "Open" | |||||
"status": "Pending Approval" | |||||
}, | }, | ||||
fields = ["name", "creation", "status"]) | fields = ["name", "creation", "status"]) | ||||
for request in requests: | for request in requests: | ||||
if date_diff(get_datetime(), request.creation) > account_deletion_sla and request.status != "Deleted": | |||||
frappe.db.set_value("Personal Data Deletion Request", request.name, "sla_status", "Failed") | |||||
if date_diff(get_datetime(), request.creation) >= auto_account_deletion: | |||||
self.trigger_data_deletion() | |||||
@frappe.whitelist(allow_guest=True) | @frappe.whitelist(allow_guest=True) | ||||
def confirm_deletion(email, name, host_name): | def confirm_deletion(email, name, host_name): | ||||
@@ -66,7 +66,7 @@ | |||||
"route_redirects", | "route_redirects", | ||||
"account_deletion_settings_section", | "account_deletion_settings_section", | ||||
"show_account_deletion_link", | "show_account_deletion_link", | ||||
"account_deletion_sla" | |||||
"auto_account_deletion" | |||||
], | ], | ||||
"fields": [ | "fields": [ | ||||
{ | { | ||||
@@ -395,16 +395,17 @@ | |||||
"fieldtype": "Section Break", | "fieldtype": "Section Break", | ||||
"label": "Account Deletion Settings" | "label": "Account Deletion Settings" | ||||
}, | }, | ||||
{ | |||||
"fieldname": "account_deletion_sla", | |||||
"fieldtype": "Int", | |||||
"label": "Account Deletion SLA (Days)" | |||||
}, | |||||
{ | { | ||||
"default": "0", | "default": "0", | ||||
"fieldname": "show_account_deletion_link", | "fieldname": "show_account_deletion_link", | ||||
"fieldtype": "Check", | "fieldtype": "Check", | ||||
"label": "Show Account Deletion Link in My Account Page" | "label": "Show Account Deletion Link in My Account Page" | ||||
}, | |||||
{ | |||||
"default": "3", | |||||
"fieldname": "auto_account_deletion", | |||||
"fieldtype": "Int", | |||||
"label": "Auto Account Deletion within (Days)" | |||||
} | } | ||||
], | ], | ||||
"icon": "fa fa-cog", | "icon": "fa fa-cog", | ||||
@@ -413,7 +414,7 @@ | |||||
"issingle": 1, | "issingle": 1, | ||||
"links": [], | "links": [], | ||||
"max_attachments": 10, | "max_attachments": 10, | ||||
"modified": "2021-12-01 10:15:17.403155", | |||||
"modified": "2021-12-15 17:28:59.255184", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Website", | "module": "Website", | ||||
"name": "Website Settings", | "name": "Website Settings", | ||||
@@ -179,5 +179,5 @@ def get_items(parentfield): | |||||
return top_items | return top_items | ||||
@frappe.whitelist(allow_guest=True) | @frappe.whitelist(allow_guest=True) | ||||
def get_account_deletion_sla(): | |||||
return frappe.db.get_single_value("Website Settings", "account_deletion_sla") | |||||
def get_auto_account_deletion(): | |||||
return frappe.db.get_single_value("Website Settings", "auto_account_deletion") |
@@ -1,7 +1,7 @@ | |||||
frappe.ready(function() { | frappe.ready(function() { | ||||
frappe.web_form.after_load = () => { | frappe.web_form.after_load = () => { | ||||
frappe.call({ | frappe.call({ | ||||
method: "frappe.website.doctype.website_settings.website_settings.get_account_deletion_sla", | |||||
method: "frappe.website.doctype.website_settings.website_settings.get_auto_account_deletion", | |||||
callback: (data) => { | callback: (data) => { | ||||
if (data.message) { | if (data.message) { | ||||
const intro_wrapper = $('#introduction .ql-editor.read-mode'); | const intro_wrapper = $('#introduction .ql-editor.read-mode'); | ||||