def export_userdata(user_id, **kwargs): from pybossa.core import user_repo, project_repo, task_repo, result_repo from flask import current_app, url_for json_exporter = JsonExporter() user = user_repo.get(user_id) user_data = user.dictize() del user_data['passwd_hash'] projects = project_repo.filter_by(owner_id=user.id) projects_data = [project.dictize() for project in projects] taskruns = task_repo.filter_task_runs_by(user_id=user.id) taskruns_data = [tr.dictize() for tr in taskruns] pdf = json_exporter._make_zip(None, '', 'personal_data', user_data, user_id, 'personal_data.zip') upf = json_exporter._make_zip(None, '', 'user_projects', projects_data, user_id, 'user_projects.zip') ucf = json_exporter._make_zip(None, '', 'user_contributions', taskruns_data, user_id, 'user_contributions.zip') upload_method = current_app.config.get('UPLOAD_METHOD') if upload_method == 'local': upload_method = 'uploads.uploaded_file' personal_data_link = url_for(upload_method, filename="user_%s/%s" % (user_id, pdf)) personal_projects_link = url_for(upload_method, filename="user_%s/%s" % (user_id, upf)) personal_contributions_link = url_for(upload_method, filename="user_%s/%s" % (user_id, ucf)) body = render_template('/account/email/exportdata.md', user=user.dictize(), personal_data_link=personal_data_link, personal_projects_link=personal_projects_link, personal_contributions_link=personal_contributions_link, config=current_app.config) html = render_template('/account/email/exportdata.html', user=user.dictize(), personal_data_link=personal_data_link, personal_projects_link=personal_projects_link, personal_contributions_link=personal_contributions_link, config=current_app.config) subject = 'Your personal data' mail_dict = dict(recipients=[user.email_addr], subject=subject, body=body, html=html) send_mail(mail_dict)
def export_userdata(user_id, admin_addr, **kwargs): from pybossa.core import (user_repo, uploader) from flask import current_app, url_for json_exporter = JsonExporter() user = user_repo.get(user_id) user_data = user.dictize() del user_data['passwd_hash'] pdf = json_exporter._make_zip(None, '', 'personal_data', user_data, user_id, 'personal_data.zip') upload_method = current_app.config.get('UPLOAD_METHOD') attachments = [] personal_data_link = None if upload_method == 'local': filename = uploader.get_file_path('user_%s' % user_id, pdf) with open(filename) as fp: attachment = Attachment(pdf, "application/zip", fp.read()) attachments = [attachment] else: personal_data_link = url_for(upload_method, filename="user_%s/%s" % (user_id, pdf)) body = render_template('/account/email/exportdata.md', user=user.dictize(), personal_data_link=personal_data_link, config=current_app.config) html = render_template('/account/email/exportdata.html', user=user.dictize(), personal_data_link=personal_data_link, config=current_app.config) subject = 'Your personal data' bcc = [admin_addr] mail_dict = dict(recipients=[user.email_addr], bcc=bcc, subject=subject, body=body, html=html, attachments=attachments) send_mail(mail_dict)