diff --git a/frappe/website/doctype/personal_data_download_request/personal_data_download_request.py b/frappe/website/doctype/personal_data_download_request/personal_data_download_request.py index e0f1b0d0b4..bb740fa477 100644 --- a/frappe/website/doctype/personal_data_download_request/personal_data_download_request.py +++ b/frappe/website/doctype/personal_data_download_request/personal_data_download_request.py @@ -13,9 +13,7 @@ class PersonalDataDownloadRequest(Document): if self.user in ['Administrator', 'Guest']: frappe.throw(_("This user cannot request to download data")) else: - personal_data = get_unlinked_user_data(self.user) - personal_data.update(get_linked_user_data(self.user)) - + personal_data = get_user_data(self.user) self.generate_file_and_send_mail(personal_data) def generate_file_and_send_mail(self, personal_data): @@ -23,34 +21,26 @@ class PersonalDataDownloadRequest(Document): user_name = self.user_name.replace(' ','-') f = frappe.get_doc({ 'doctype': 'File', - 'file_name': 'Personal-Data-'+user_name+'.json', + 'file_name': 'Personal-Data-'+user_name+'-'+self.name+'.json', + "attached_to_doctype": 'Personal Data Download Request', + "attached_to_name": self, 'content': str(personal_data), 'is_private': True }) f.save() frappe.sendmail(recipients= self.user, subject=_("ERPNext: User Data"), - message= "Your data is ready, Click here to download your data", - header=["ERPNext: User Data", "green"]) + message= _("Your data is ready, Click here to download your data"), + header=[_("ERPNext: User Data"), "green"]) -def get_unlinked_user_data(user): +def get_user_data(user): """ returns user data not linked to User doctype """ hooks = frappe.get_hooks("user_privacy_documents") data = {} for hook in hooks: - d = frappe.get_all(hook.get('doctype'), {hook.get('email_field'): user},["*"]) + d = [] + for email_field in hook.get('email_field'): + d += frappe.get_all(hook.get('doctype'), {email_field: user},["*"]) if d: - data.update({ hook.get('doctype'):d }) - return data - -def get_linked_user_data(user): - """ returns user data linked to the User doctype """ - linked_doctypes = get_linked_doctypes("Customer") - data = {} - for doctype in linked_doctypes: - meta = frappe.get_meta(doctype) - if not meta.issingle: - d = frappe.get_all(doctype, {linked_doctypes.get(doctype).get('fieldname')[0]: user},["*"]) - if d: - data.update({ doctype:d }) + data.update({ hook.get('doctype'):d }) return data \ No newline at end of file