blob: aedccb4bfa70388a8f97feb71f5d5715377b086a [file] [log] [blame]
import smtplib
import lnt.server.reporting.runs
def emailReport(result, session, run, baseurl, email_config, to,
was_added=True):
import email.mime.multipart
import email.mime.text
subject, report, html_report = _getReport(result, session, run, baseurl,
was_added)
# Ignore if no to address was given, we do things this way because of the
# awkward way we collect result information as part of generating the email
# report.
if email_config is None or to is None:
return
# Generate a plain text message if we have no html report.
if not html_report:
msg = email.mime.text.MIMEText(report.encode('utf-8'), 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = email_config.from_address
msg['To'] = to
else:
msg = email.mime.multipart.MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = email_config.from_address
msg['To'] = to
# Attach parts into message container, according to RFC 2046, the last
# part of a multipart message, in this case the HTML message, is best
# and preferred.
msg.attach(email.mime.text.MIMEText(report.encode('utf-8'), 'plain', 'utf-8'))
msg.attach(email.mime.text.MIMEText(html_report.encode('utf-8'), 'html', 'utf-8'))
s = smtplib.SMTP(email_config.host)
s.sendmail(email_config.from_address, [to], msg.as_string())
s.quit()
def _getReport(result, session, run, baseurl, was_added, compare_to=None):
data = lnt.server.reporting.runs.generate_run_data(
session, run, baseurl=baseurl, result=result, compare_to=compare_to,
num_comparison_runs=10)
env = lnt.server.ui.app.create_jinja_environment()
text_template = env.get_template('reporting/run_report.txt')
text_report = text_template.render(data)
html_template = env.get_template('reporting/run_report.html')
html_report = html_template.render(data)
return data['subject'], text_report, html_report