mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-24 13:00:26 +00:00
merge: with v3
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
from django.db.models import Subquery, OuterRef, Value, F, Q
|
||||
from django_filters import rest_framework as filters
|
||||
from django.db.models.functions import Concat
|
||||
from django.db.models import Subquery, OuterRef, Value, F, Q
|
||||
|
||||
from common.drf.filters import BaseFilterSet
|
||||
|
||||
from tickets.models import (
|
||||
Ticket, TicketStep, ApplyAssetTicket, ApplyApplicationTicket,
|
||||
Ticket, TicketStep, ApplyAssetTicket,
|
||||
ApplyLoginTicket, ApplyLoginAssetTicket, ApplyCommandTicket
|
||||
)
|
||||
|
||||
@@ -35,8 +35,8 @@ class TicketFilter(BaseFilterSet):
|
||||
def filter_relevant_asset(self, queryset, name, value):
|
||||
asset_ids = ApplyAssetTicket.objects.annotate(
|
||||
asset_str=Concat(
|
||||
F('apply_assets__hostname'), Value('('),
|
||||
F('apply_assets__ip'), Value(')')
|
||||
F('apply_assets__name'), Value('('),
|
||||
F('apply_assets__address'), Value(')')
|
||||
)
|
||||
).filter(
|
||||
asset_str__icontains=value
|
||||
@@ -44,8 +44,8 @@ class TicketFilter(BaseFilterSet):
|
||||
|
||||
login_asset_ids = ApplyLoginAssetTicket.objects.annotate(
|
||||
asset_str=Concat(
|
||||
F('apply_login_asset__hostname'), Value('('),
|
||||
F('apply_login_asset__ip'), Value(')')
|
||||
F('apply_login_asset__name'), Value('('),
|
||||
F('apply_login_asset__address'), Value(')')
|
||||
)
|
||||
).filter(
|
||||
asset_str__icontains=value
|
||||
@@ -58,40 +58,6 @@ class TicketFilter(BaseFilterSet):
|
||||
ticket_ids = list(set(list(asset_ids) + list(login_asset_ids) + list(command_ids)))
|
||||
return queryset.filter(id__in=ticket_ids)
|
||||
|
||||
def filter_relevant_app(self, queryset, name, value):
|
||||
app_ids = ApplyApplicationTicket.objects.filter(
|
||||
apply_applications__name__icontains=value
|
||||
).values_list('id', flat=True)
|
||||
|
||||
command_ids = ApplyCommandTicket.objects.filter(
|
||||
apply_run_asset__icontains=value
|
||||
).values_list('id', flat=True)
|
||||
|
||||
ticket_ids = list(set(list(app_ids) + list(command_ids)))
|
||||
return queryset.filter(id__in=ticket_ids)
|
||||
|
||||
def filter_relevant_system_user(self, queryset, name, value):
|
||||
system_user_query = Q(apply_system_users__name__icontains=value)
|
||||
asset_ids = ApplyAssetTicket.objects.filter(
|
||||
system_user_query
|
||||
).values_list('id', flat=True)
|
||||
|
||||
app_ids = ApplyApplicationTicket.objects.filter(
|
||||
system_user_query
|
||||
).values_list('id', flat=True)
|
||||
|
||||
login_asset_ids = ApplyLoginAssetTicket.objects.filter(
|
||||
apply_login_system_user__name__icontains=value
|
||||
).values_list('id', flat=True)
|
||||
|
||||
command_ids = ApplyCommandTicket.objects.filter(
|
||||
apply_run_system_user__name__icontains=value
|
||||
).values_list('id', flat=True)
|
||||
ticket_ids = list(
|
||||
set(list(asset_ids) + list(app_ids) + list(login_asset_ids) + list(command_ids))
|
||||
)
|
||||
return queryset.filter(id__in=ticket_ids)
|
||||
|
||||
def filter_relevant_command(self, queryset, name, value):
|
||||
command_ids = ApplyCommandTicket.objects.filter(
|
||||
apply_run_command__icontains=value
|
||||
@@ -105,12 +71,6 @@ class ApplyAssetTicketFilter(BaseFilterSet):
|
||||
fields = ('id',)
|
||||
|
||||
|
||||
class ApplyApplicationTicketFilter(BaseFilterSet):
|
||||
class Meta:
|
||||
model = ApplyApplicationTicket
|
||||
fields = ('id',)
|
||||
|
||||
|
||||
class ApplyLoginTicketFilter(BaseFilterSet):
|
||||
class Meta:
|
||||
model = ApplyLoginTicket
|
||||
|
Reference in New Issue
Block a user