from flask import current_app, render_template
from flask_mail import Message
from . import mail
from .decorators import background


def create_message(recipient, subject, template, **kwargs):
    app = current_app._get_current_object()
    sender = app.config['NOPAQUE_MAIL_SENDER']
    subject_prefix = app.config['NOPAQUE_MAIL_SUBJECT_PREFIX']
    msg = Message('{} {}'.format(subject_prefix, subject),
                  recipients=[recipient], sender=sender)
    msg.body = render_template('{}.txt.j2'.format(template), **kwargs)
    msg.html = render_template('{}.html.j2'.format(template), **kwargs)
    return msg


@background
def send(msg, *args, **kwargs):
    app = kwargs['app']
    with app.app_context():
        mail.send(msg)