mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-22 20:09:54 +00:00
feat: 工单多种审批
This commit is contained in:
@@ -1,66 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from urllib.parse import urljoin
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from common.utils import get_logger
|
||||
from common.tasks import send_mail_async
|
||||
from . import const
|
||||
from .notifications import TicketAppliedToAssignee, TicketProcessedToApplicant
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
EMAIL_TEMPLATE = '''
|
||||
<div>
|
||||
<p>
|
||||
{title}
|
||||
<a href={ticket_detail_url}>
|
||||
<strong>{ticket_detail_url_description}</strong>
|
||||
</a>
|
||||
</p>
|
||||
<div>
|
||||
{body}
|
||||
</div>
|
||||
</div>
|
||||
'''
|
||||
|
||||
|
||||
def send_ticket_applied_mail_to_assignees(ticket):
|
||||
assignees = ticket.current_node.first().ticket_assignees.all()
|
||||
if not assignees:
|
||||
logger.debug("Not found assignees, ticket: {}({}), assignees: {}".format(
|
||||
ticket, str(ticket.id), assignees)
|
||||
)
|
||||
logger.debug("Not found assignees, ticket: {}({}), assignees: {}".format(ticket, str(ticket.id), assignees))
|
||||
return
|
||||
|
||||
ticket_detail_url = urljoin(settings.SITE_URL, const.TICKET_DETAIL_URL.format(id=str(ticket.id)))
|
||||
subject = _('New Ticket - {} ({})').format(ticket.title, ticket.get_type_display())
|
||||
message = EMAIL_TEMPLATE.format(
|
||||
title=_('Your has a new ticket, applicant - {}').format(str(ticket.applicant_display)),
|
||||
ticket_detail_url=ticket_detail_url,
|
||||
ticket_detail_url_description=_('click here to review'),
|
||||
body=ticket.body.replace('\n', '<br/>'),
|
||||
)
|
||||
if settings.DEBUG:
|
||||
logger.debug(message)
|
||||
recipient_list = [i.assignee.email for i in assignees]
|
||||
send_mail_async.delay(subject, message, recipient_list, html_message=message)
|
||||
for assignee in assignees:
|
||||
instance = TicketAppliedToAssignee(assignee, ticket)
|
||||
if settings.DEBUG:
|
||||
logger.debug(instance)
|
||||
instance.publish_async()
|
||||
|
||||
|
||||
def send_ticket_processed_mail_to_applicant(ticket, processor):
|
||||
if not ticket.applicant:
|
||||
logger.error("Not found applicant: {}({})".format(ticket.title, ticket.id))
|
||||
return
|
||||
processor_display = str(processor)
|
||||
ticket_detail_url = urljoin(settings.SITE_URL, const.TICKET_DETAIL_URL.format(id=str(ticket.id)))
|
||||
subject = _('Ticket has processed - {} ({})').format(ticket.title, processor_display)
|
||||
message = EMAIL_TEMPLATE.format(
|
||||
title=_('Your ticket has been processed, processor - {}').format(processor_display),
|
||||
ticket_detail_url=ticket_detail_url,
|
||||
ticket_detail_url_description=_('click here to review'),
|
||||
body=ticket.body.replace('\n', '<br/>'),
|
||||
)
|
||||
|
||||
instance = TicketProcessedToApplicant(ticket.applicant, ticket, processor)
|
||||
if settings.DEBUG:
|
||||
logger.debug(message)
|
||||
recipient_list = [ticket.applicant.email, ]
|
||||
send_mail_async.delay(subject, message, recipient_list, html_message=message)
|
||||
logger.debug(instance)
|
||||
instance.publish_async()
|
||||
|
Reference in New Issue
Block a user