2024-01-21 23:35:44 +00:00
|
|
|
from sanic import Sanic
|
2024-01-19 17:03:54 +00:00
|
|
|
from email.mime.text import MIMEText
|
|
|
|
from email.mime.multipart import MIMEMultipart
|
|
|
|
from messages import ROOM_ERROR_TYPES
|
|
|
|
import smtplib
|
|
|
|
from messages import *
|
2024-01-21 23:35:44 +00:00
|
|
|
from config import SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-01-21 23:35:44 +00:00
|
|
|
async def send_unconfirm_message (room_order, orders):
|
2024-02-10 17:44:20 +00:00
|
|
|
memberMessages = []
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-02-10 17:44:20 +00:00
|
|
|
issues_plain = ""
|
|
|
|
issues_html = "<ul>"
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-02-10 17:44:20 +00:00
|
|
|
for err in room_order.room_errors:
|
|
|
|
errId = err[1]
|
|
|
|
order = err[0]
|
|
|
|
orderStr = ""
|
|
|
|
if order is not None:
|
|
|
|
orderStr = f"{order}: "
|
|
|
|
if errId in ROOM_ERROR_TYPES.keys():
|
|
|
|
issues_plain += f" • {orderStr}{ROOM_ERROR_TYPES[errId]}\n"
|
|
|
|
issues_html += f"<li>{orderStr}{ROOM_ERROR_TYPES[errId]}</li>"
|
|
|
|
issues_html += "</ul>"
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-02-10 17:44:20 +00:00
|
|
|
for member in orders:
|
|
|
|
plain_body = ROOM_UNCONFIRM_TEXT['plain'].format(member.name, room_order.room_name, issues_plain)
|
|
|
|
html_body = render_email_template(ROOM_UNCONFIRM_TITLE, ROOM_UNCONFIRM_TEXT['html'].format(member.name, room_order.room_name, issues_html))
|
|
|
|
plain_text = MIMEText(plain_body, "plain")
|
|
|
|
html_text = MIMEText(html_body, "html")
|
|
|
|
message = MIMEMultipart("alternative")
|
|
|
|
message.attach(plain_text)
|
|
|
|
message.attach(html_text)
|
|
|
|
message['Subject'] = '[Furizon] Your room cannot be confirmed'
|
|
|
|
message['From'] = 'Furizon <no-reply@furizon.net>'
|
|
|
|
message['To'] = f"{member.name} <{member.email}>"
|
|
|
|
memberMessages.append(message)
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-02-10 17:44:20 +00:00
|
|
|
if len(memberMessages) == 0: return
|
2024-01-19 17:03:54 +00:00
|
|
|
|
2024-02-10 17:44:20 +00:00
|
|
|
with smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT) as sender:
|
|
|
|
sender.login(SMTP_USER, SMTP_PASSWORD)
|
|
|
|
for message in memberMessages:
|
|
|
|
sender.sendmail(message['From'], message['to'], message.as_string())
|
2024-01-21 23:35:44 +00:00
|
|
|
|
2024-01-19 17:03:54 +00:00
|
|
|
def render_email_template(title = "", body = ""):
|
2024-02-10 17:44:20 +00:00
|
|
|
tpl = Environment(loader=FileSystemLoader("tpl"), autoescape=False).get_template('email/comunication.html')
|
|
|
|
return str(tpl.render(title=title, body=body))
|