feat: 支持企业微信、钉钉直接审批工单 (#8115)

This commit is contained in:
jiangweidong
2022-05-05 13:07:48 +08:00
committed by GitHub
parent d23953932f
commit c56179e9e4
15 changed files with 424 additions and 81 deletions

View File

@@ -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