Auto-commit before push to git.mycloud24.ru
This commit is contained in:
@@ -6,16 +6,28 @@ from email.utils import formataddr
|
||||
from pathlib import Path
|
||||
from flask import current_app, render_template
|
||||
|
||||
from app.services.ticket_service import generate_ticket_image
|
||||
|
||||
def send_invitation(guest, event_name="Корпоратив", additional_text=""):
|
||||
"""Отправляет приглашение гостю на email с QR-кодом во вложении."""
|
||||
|
||||
def send_invitation(guest, event_name=None, additional_text=""):
|
||||
"""Отправляет приглашение гостю на email с QR-кодом и билетом во вложении."""
|
||||
config = current_app.config
|
||||
|
||||
if event_name is None:
|
||||
event_name = guest.event.name if guest.event else "Мероприятие"
|
||||
|
||||
msg = MIMEMultipart("related")
|
||||
msg["Subject"] = f"Приглашение на мероприятие: {event_name}"
|
||||
msg["From"] = formataddr(("InviteMe", config.get("MAIL_DEFAULT_SENDER", config["MAIL_USERNAME"])))
|
||||
msg["To"] = guest.email
|
||||
|
||||
# Генерируем билет
|
||||
try:
|
||||
ticket_path = generate_ticket_image(guest, guest.event)
|
||||
except Exception as e:
|
||||
ticket_path = None
|
||||
current_app.logger.warning(f"Не удалось сгенерировать билет для {guest.email}: {e}")
|
||||
|
||||
# HTML-шаблон письма
|
||||
html_body = render_template(
|
||||
"email/invitation.html",
|
||||
@@ -23,6 +35,7 @@ def send_invitation(guest, event_name="Корпоратив", additional_text=""
|
||||
event_name=event_name,
|
||||
additional_text=additional_text,
|
||||
qr_cid="qr_code_image",
|
||||
ticket_cid="ticket_image" if ticket_path else None,
|
||||
)
|
||||
|
||||
msg.attach(MIMEText(html_body, "html", "utf-8"))
|
||||
@@ -36,6 +49,14 @@ def send_invitation(guest, event_name="Корпоратив", additional_text=""
|
||||
img.add_header("Content-Disposition", "inline", filename=guest.qr_filename)
|
||||
msg.attach(img)
|
||||
|
||||
# Прикрепляем билет
|
||||
if ticket_path and ticket_path.exists():
|
||||
with open(ticket_path, "rb") as img_file:
|
||||
img = MIMEImage(img_file.read())
|
||||
img.add_header("Content-ID", "<ticket_image>")
|
||||
img.add_header("Content-Disposition", "inline", filename=f"ticket_{guest.token}.png")
|
||||
msg.attach(img)
|
||||
|
||||
# Отправка через SMTP
|
||||
server = config["MAIL_SERVER"]
|
||||
port = config["MAIL_PORT"]
|
||||
|
||||
Reference in New Issue
Block a user