jumpserver/apps/tickets/api/comment.py

39 lines
1.1 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
#
from rest_framework import viewsets, mixins
from django.shortcuts import get_object_or_404
from common.exceptions import JMSException
from common.utils import lazyproperty
from tickets import serializers
from tickets.models import Ticket
from tickets.permissions.comment import IsAssignee, IsApplicant, IsSwagger
__all__ = ['CommentViewSet']
class CommentViewSet(mixins.CreateModelMixin, viewsets.ReadOnlyModelViewSet):
serializer_class = serializers.CommentSerializer
2021-01-01 23:47:43 +00:00
permission_classes = (IsSwagger | IsAssignee | IsApplicant,)
@lazyproperty
def ticket(self):
if getattr(self, 'swagger_fake_view', False):
return None
ticket_id = self.request.query_params.get('ticket_id')
try:
ticket = get_object_or_404(Ticket, pk=ticket_id)
return ticket
except Exception as e:
raise JMSException(str(e))
def get_serializer_context(self):
context = super().get_serializer_context()
context['ticket'] = self.ticket
return context
def get_queryset(self):
queryset = self.ticket.comments.all()
return queryset