mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-22 03:47:38 +00:00
feat: 支持企业微信、钉钉直接审批工单 (#8115)
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from django.shortcuts import reverse
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from . import const
|
||||
from notifications.notifications import UserMessage
|
||||
from common.utils import get_logger
|
||||
from common.utils import get_logger, random_string
|
||||
from .models import Ticket
|
||||
from . import const
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
@@ -57,6 +59,13 @@ class TicketAppliedToAssignee(BaseTicketMessage):
|
||||
def __init__(self, user, ticket):
|
||||
self.ticket = ticket
|
||||
super().__init__(user)
|
||||
self._token = None
|
||||
|
||||
@property
|
||||
def token(self):
|
||||
if self._token is None:
|
||||
self._token = random_string(32)
|
||||
return self._token
|
||||
|
||||
@property
|
||||
def content_title(self):
|
||||
@@ -71,6 +80,29 @@ class TicketAppliedToAssignee(BaseTicketMessage):
|
||||
)
|
||||
return title
|
||||
|
||||
def get_ticket_approval_url(self):
|
||||
url = reverse('tickets:direct-approve', kwargs={'token': self.token})
|
||||
return urljoin(settings.SITE_URL, url)
|
||||
|
||||
def get_html_msg(self) -> dict:
|
||||
body = self.ticket.body.replace('\n', '<br/>')
|
||||
context = dict(
|
||||
title=self.content_title,
|
||||
ticket_detail_url=self.ticket_detail_url,
|
||||
body=body,
|
||||
)
|
||||
|
||||
ticket_approval_url = self.get_ticket_approval_url()
|
||||
context.update({'ticket_approval_url': ticket_approval_url})
|
||||
message = render_to_string('tickets/_msg_ticket.html', context)
|
||||
cache.set(self.token, {
|
||||
'body': body, 'ticket_id': self.ticket.id
|
||||
}, 3600)
|
||||
return {
|
||||
'subject': self.subject,
|
||||
'message': message
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def gen_test_msg(cls):
|
||||
from .models import Ticket
|
||||
|
Reference in New Issue
Block a user