mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-20 19:09:02 +00:00
perf: 优化消息通知 (#7024)
* perf: 优化系统用户列表 * stash * perf: 优化消息通知 * perf: 修改钉钉 * perf: 修改优化消息通知 * perf: 修改requirements * perf: 优化datetime Co-authored-by: ibuler <ibuler@qq.com>
This commit is contained in:
@@ -1,70 +1,49 @@
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from django.conf import settings
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from . import const
|
||||
from notifications.notifications import UserMessage
|
||||
from common.utils import get_logger
|
||||
from .models import Ticket
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
EMAIL_TEMPLATE = '''
|
||||
<div>
|
||||
<p>
|
||||
{title}
|
||||
</p>
|
||||
<div>
|
||||
{body}
|
||||
</div>
|
||||
<div>
|
||||
<a href={ticket_detail_url}>
|
||||
<strong>{ticket_detail_url_description}</strong>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
'''
|
||||
|
||||
|
||||
class BaseTicketMessage(UserMessage):
|
||||
title: ''
|
||||
ticket: Ticket
|
||||
content_title: str
|
||||
|
||||
@property
|
||||
def subject(self):
|
||||
return _(self.title).format(self.ticket.title, self.ticket.get_type_display())
|
||||
return self.title.format(self.ticket.title, self.ticket.get_type_display())
|
||||
|
||||
@property
|
||||
def ticket_detail_url(self):
|
||||
return urljoin(settings.SITE_URL, const.TICKET_DETAIL_URL.format(id=str(self.ticket.id)))
|
||||
|
||||
def get_text_msg(self) -> dict:
|
||||
message = """
|
||||
{title}: {ticket_detail_url}
|
||||
{body}
|
||||
""".format(
|
||||
def get_html_msg(self) -> dict:
|
||||
context = dict(
|
||||
title=self.content_title,
|
||||
ticket_detail_url=self.ticket_detail_url,
|
||||
body=self.ticket.body.replace('<div style="margin-left: 20px;">', '').replace('</div>', '')
|
||||
body=self.ticket.body.replace('\n', '<br/>'),
|
||||
)
|
||||
message = render_to_string('tickets/_msg_ticket.html', context)
|
||||
return {
|
||||
'subject': self.subject,
|
||||
'message': message
|
||||
}
|
||||
|
||||
def get_html_msg(self) -> dict:
|
||||
message = EMAIL_TEMPLATE.format(
|
||||
title=self.content_title,
|
||||
ticket_detail_url=self.ticket_detail_url,
|
||||
ticket_detail_url_description=_('click here to review'),
|
||||
body=self.ticket.body.replace('\n', '<br/>'),
|
||||
)
|
||||
return {
|
||||
'subject': self.subject,
|
||||
'message': message
|
||||
}
|
||||
@classmethod
|
||||
def gen_test_msg(cls):
|
||||
return cls(None)
|
||||
|
||||
|
||||
class TicketAppliedToAssignee(BaseTicketMessage):
|
||||
title = 'New Ticket - {} ({})'
|
||||
title = _('New Ticket - {} ({})')
|
||||
|
||||
def __init__(self, user, ticket):
|
||||
self.ticket = ticket
|
||||
@@ -72,11 +51,21 @@ class TicketAppliedToAssignee(BaseTicketMessage):
|
||||
|
||||
@property
|
||||
def content_title(self):
|
||||
return _('Your has a new ticket, applicant - {}').format(str(self.ticket.applicant_display))
|
||||
return _('Your has a new ticket, applicant - {}').format(
|
||||
str(self.ticket.applicant_display)
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def gen_test_msg(cls):
|
||||
from .models import Ticket
|
||||
from users.models import User
|
||||
ticket = Ticket.objects.first()
|
||||
user = User.objects.first()
|
||||
return cls(user, ticket)
|
||||
|
||||
|
||||
class TicketProcessedToApplicant(BaseTicketMessage):
|
||||
title = 'Ticket has processed - {} ({})'
|
||||
title = _('Ticket has processed - {} ({})')
|
||||
|
||||
def __init__(self, user, ticket, processor):
|
||||
self.ticket = ticket
|
||||
@@ -86,3 +75,12 @@ class TicketProcessedToApplicant(BaseTicketMessage):
|
||||
@property
|
||||
def content_title(self):
|
||||
return _('Your ticket has been processed, processor - {}').format(str(self.processor))
|
||||
|
||||
@classmethod
|
||||
def gen_test_msg(cls):
|
||||
from .models import Ticket
|
||||
from users.models import User
|
||||
ticket = Ticket.objects.first()
|
||||
user = User.objects.first()
|
||||
processor = User.objects.last()
|
||||
return cls(user, ticket, processor)
|
||||
|
Reference in New Issue
Block a user