mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-01 22:49:06 +00:00
fix: sys-site-msg support revoke
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin
|
||||
from rest_framework.response import Response
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from common.api import JMSGenericViewSet
|
||||
from common.const.http import GET, PATCH, POST
|
||||
@@ -11,6 +12,8 @@ from ..serializers import (
|
||||
SiteMessageSendSerializer,
|
||||
)
|
||||
from ..site_msg import SiteMessageUtil
|
||||
from ..models import MessageContent
|
||||
|
||||
|
||||
__all__ = ('SiteMessageViewSet',)
|
||||
|
||||
@@ -59,5 +62,14 @@ class SiteMessageViewSet(ListModelMixin, RetrieveModelMixin, JMSGenericViewSet):
|
||||
def send(self, request, **kwargs):
|
||||
s = self.get_serializer(data=request.data)
|
||||
s.is_valid(raise_exception=True)
|
||||
SiteMessageUtil.send_msg(**s.validated_data, sender=request.user)
|
||||
site_msg = SiteMessageUtil.send_msg(**s.validated_data, sender=request.user)
|
||||
if site_msg:
|
||||
return Response({'detail': 'ok', 'site_msg_id': str(site_msg.id)})
|
||||
else:
|
||||
return Response({'detail': 'error'})
|
||||
|
||||
@action(methods=[PATCH], detail=True, permission_classes=[OnlySuperUser,])
|
||||
def revoke(self, request, **kwargs):
|
||||
msg = get_object_or_404(MessageContent, id=kwargs['pk'])
|
||||
msg.revoke_msg()
|
||||
return Response({'detail': 'ok'})
|
||||
|
||||
@@ -52,8 +52,15 @@ class MessageContent(JMSBaseModel):
|
||||
return {
|
||||
'id': str(self.id),
|
||||
'subject': self.subject,
|
||||
'is_broadcast': self.is_broadcast,
|
||||
'message': self.message,
|
||||
'display_mode': self.display_mode,
|
||||
'date_created': str(self.date_created),
|
||||
'sender': str(self.sender) if self.sender else ''
|
||||
}
|
||||
|
||||
def revoke_msg(self):
|
||||
if not self.is_broadcast:
|
||||
return
|
||||
self.is_broadcast = False
|
||||
self.save()
|
||||
|
||||
@@ -41,6 +41,7 @@ class SiteMessageUtil:
|
||||
site_msg.users.add(*user_ids)
|
||||
# 只有调用 save 才能触发 post_save 信号
|
||||
site_msg.save()
|
||||
return site_msg
|
||||
|
||||
@classmethod
|
||||
def get_user_all_msgs(cls, user_id):
|
||||
|
||||
Reference in New Issue
Block a user