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