mirror of
				https://github.com/jumpserver/jumpserver.git
				synced 2025-10-31 13:52:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django_filters import rest_framework as filters
 | |
| from django.db.models import Subquery, OuterRef
 | |
| 
 | |
| from common.drf.filters import BaseFilterSet
 | |
| 
 | |
| from tickets.models import (
 | |
|     Ticket, TicketStep, ApplyAssetTicket, ApplyApplicationTicket,
 | |
|     ApplyLoginTicket, ApplyLoginAssetTicket, ApplyCommandTicket
 | |
| )
 | |
| 
 | |
| 
 | |
| class TicketFilter(BaseFilterSet):
 | |
|     assignees__id = filters.UUIDFilter(method='filter_assignees_id')
 | |
| 
 | |
|     class Meta:
 | |
|         model = Ticket
 | |
|         fields = (
 | |
|             'id', 'title', 'type', 'status', 'state', 'applicant', 'assignees__id'
 | |
|         )
 | |
| 
 | |
|     def filter_assignees_id(self, queryset, name, value):
 | |
|         step_qs = TicketStep.objects.filter(
 | |
|             level=OuterRef("approval_step")
 | |
|         ).values_list('id', flat=True)
 | |
|         return queryset.filter(
 | |
|             ticket_steps__id__in=Subquery(step_qs),
 | |
|             ticket_steps__ticket_assignees__assignee__id=value
 | |
|         )
 | |
| 
 | |
| 
 | |
| class ApplyAssetTicketFilter(BaseFilterSet):
 | |
|     class Meta:
 | |
|         model = ApplyAssetTicket
 | |
|         fields = ('id',)
 | |
| 
 | |
| 
 | |
| class ApplyApplicationTicketFilter(BaseFilterSet):
 | |
|     class Meta:
 | |
|         model = ApplyApplicationTicket
 | |
|         fields = ('id',)
 | |
| 
 | |
| 
 | |
| class ApplyLoginTicketFilter(BaseFilterSet):
 | |
|     class Meta:
 | |
|         model = ApplyLoginTicket
 | |
|         fields = ('id',)
 | |
| 
 | |
| 
 | |
| class ApplyLoginAssetTicketFilter(BaseFilterSet):
 | |
|     class Meta:
 | |
|         model = ApplyLoginAssetTicket
 | |
|         fields = ('id',)
 | |
| 
 | |
| 
 | |
| class ApplyCommandTicketFilter(BaseFilterSet):
 | |
|     class Meta:
 | |
|         model = ApplyCommandTicket
 | |
|         fields = ('id',)
 |