mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
# -*- coding: utf-8 -*-
 | 
						|
#
 | 
						|
 | 
						|
from rest_framework import viewsets, mixins
 | 
						|
from common.exceptions import JMSException
 | 
						|
from common.utils import lazyproperty
 | 
						|
from rbac.permissions import RBACPermission
 | 
						|
from tickets import serializers
 | 
						|
from tickets.models import Ticket, Comment
 | 
						|
from tickets.permissions.comment import IsAssignee, IsApplicant, IsSwagger
 | 
						|
 | 
						|
 | 
						|
__all__ = ['CommentViewSet']
 | 
						|
 | 
						|
 | 
						|
class CommentViewSet(mixins.CreateModelMixin, viewsets.ReadOnlyModelViewSet):
 | 
						|
    serializer_class = serializers.CommentSerializer
 | 
						|
    permission_classes = (RBACPermission, IsSwagger | IsAssignee | IsApplicant)
 | 
						|
    rbac_perms = {
 | 
						|
        '*': 'tickets.view_ticket'
 | 
						|
    }
 | 
						|
 | 
						|
    @lazyproperty
 | 
						|
    def ticket(self):
 | 
						|
        if getattr(self, 'swagger_fake_view', False):
 | 
						|
            return None
 | 
						|
        ticket_id = self.request.query_params.get('ticket_id')
 | 
						|
        ticket = Ticket.all().filter(pk=ticket_id).first()
 | 
						|
        if not ticket:
 | 
						|
            raise JMSException('Not found Ticket object about `id={}`'.format(ticket_id))
 | 
						|
        return ticket
 | 
						|
 | 
						|
    def get_serializer_context(self):
 | 
						|
        context = super().get_serializer_context()
 | 
						|
        context['ticket'] = self.ticket
 | 
						|
        return context
 | 
						|
 | 
						|
    def get_queryset(self):
 | 
						|
        if getattr(self, 'swagger_fake_view', False):
 | 
						|
            return Comment.objects.none()
 | 
						|
        queryset = self.ticket.comments.all()
 | 
						|
        return queryset
 |