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 add_comment(ticket_id: str, content: str) -> None: TaigaApiClient.get_instance().add_comment(ticket_id=ticket_id, content=content)
[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()