attached user data file to doc

This commit is contained in:
Mangesh-Khairnar 2019-01-31 15:31:25 +05:30
parent fb6068dc47
commit 7c0a83aedd

View file

@ -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, <a href="+f.file_url+" download>Click here to download your data</a>",
header=["ERPNext: User Data", "green"])
message= _("Your data is ready, <a href="+f.file_url+" download>Click here to download your data</a>"),
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