Source code for ferrosoft.apps.ticketing.tasks
# Copyright (c) 2025 Ferrosoft GmbH. All rights reserved.
from asgiref.sync import sync_to_async
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.utils.translation import gettext as _
from ferrosoft.apps.ferrobase.services.taskqueue import tenant_task
from ferrosoft.apps.ticketing.models import Ticket
from ferrosoft.apps.ticketing.services.ticket import (
TaigaTicketingService,
TaigaApiClient,
)
[docs]
@sync_to_async
@tenant_task()
def create_ticket(ticket: Ticket) -> None:
TaigaTicketingService.get_instance().create_ticket(ticket=ticket)
[docs]
@sync_to_async
@tenant_task()
def send_ticket_email(ticket_url: str, email: str, ticket: Ticket) -> None:
from django.conf import settings
template_ctx = {
"reference": ticket.reference,
"title": ticket.title,
"ticket_url": ticket_url,
}
msg = EmailMultiAlternatives(
subject=_("Your support ticket has been received"),
body=render_to_string(
"ticketing/email/ticket_created.txt", context=template_ctx
),
from_email=settings.DEFAULT_FROM_EMAIL,
to=[email],
)
msg.attach_alternative(
render_to_string("ticketing/email/ticket_created.html", context=template_ctx),
"text/html",
)
msg.send()