Add support for emailing documents to a recipient list. GitLab #396

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-07-12 02:50:29 -04:00
parent b9994dbf40
commit cc33e1d259
8 changed files with 145 additions and 53 deletions

View File

@@ -1,37 +1,27 @@
from __future__ import unicode_literals
from django.apps import apps
from django.core.mail import EmailMultiAlternatives
from documents.models import Document
from mayan.celery import app
@app.task(ignore_result=True)
def task_send_document(subject_text, body_text_content, sender, recipient, document_id, user_mailer_id, as_attachment=False):
def task_send_document(subject_text, body_text_content, sender, recipient, user_mailer_id, as_attachment=False, document_id=None):
Document = apps.get_model(
app_label='documents', model_name='Document'
)
UserMailer = apps.get_model(
app_label='mailer', model_name='UserMailer'
)
if document_id:
document = Document.objects.get(pk=document_id)
else:
document = None
user_mailer = UserMailer.objects.get(pk=user_mailer_id)
connection = user_mailer.get_connection()
email_msg = EmailMultiAlternatives(
subject_text, body_text_content, sender, [recipient],
connection=connection,
user_mailer.send(
subject=subject_text, body=body_text_content, to=recipient,
document=document, as_attachment=as_attachment
)
if as_attachment:
document = Document.objects.get(pk=document_id)
with document.open() as descriptor:
email_msg.attach(
document.label, descriptor.read(), document.file_mimetype
)
try:
email_msg.send()
except Exception as exception:
user_mailer.error_log.create(message=exception)
else:
user_mailer.error_log.all().delete()