mirror of https://github.com/jumpserver/jumpserver
parent
3e69e6840b
commit
382112ee33
|
@ -12,6 +12,7 @@ from common.api import CommonGenericViewSet
|
||||||
from orgs.mixins.api import OrgGenericViewSet, OrgBulkModelViewSet, OrgRelationMixin
|
from orgs.mixins.api import OrgGenericViewSet, OrgBulkModelViewSet, OrgRelationMixin
|
||||||
from orgs.utils import current_org
|
from orgs.utils import current_org
|
||||||
from ops.models import CommandExecution
|
from ops.models import CommandExecution
|
||||||
|
from . import filters
|
||||||
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog
|
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog
|
||||||
from .serializers import FTPLogSerializer, UserLoginLogSerializer, CommandExecutionSerializer
|
from .serializers import FTPLogSerializer, UserLoginLogSerializer, CommandExecutionSerializer
|
||||||
from .serializers import OperateLogSerializer, PasswordChangeLogSerializer, CommandExecutionHostsRelationSerializer
|
from .serializers import OperateLogSerializer, PasswordChangeLogSerializer, CommandExecutionHostsRelationSerializer
|
||||||
|
@ -126,12 +127,7 @@ class CommandExecutionViewSet(ListModelMixin, OrgGenericViewSet):
|
||||||
class CommandExecutionHostRelationViewSet(OrgRelationMixin, OrgBulkModelViewSet):
|
class CommandExecutionHostRelationViewSet(OrgRelationMixin, OrgBulkModelViewSet):
|
||||||
serializer_class = CommandExecutionHostsRelationSerializer
|
serializer_class = CommandExecutionHostsRelationSerializer
|
||||||
m2m_field = CommandExecution.hosts.field
|
m2m_field = CommandExecution.hosts.field
|
||||||
filterset_fields = {
|
filterset_class = filters.CommandExecutionFilter
|
||||||
'id': ['exact'],
|
|
||||||
'asset': ['exact'],
|
|
||||||
'asset__hostname': ['icontains'],
|
|
||||||
'commandexecution': ['exact'],
|
|
||||||
}
|
|
||||||
search_fields = ('asset__hostname', )
|
search_fields = ('asset__hostname', )
|
||||||
http_method_names = ['options', 'get']
|
http_method_names = ['options', 'get']
|
||||||
rbac_perms = {
|
rbac_perms = {
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
|
from django.db.models import F, Value
|
||||||
|
from django.db.models.functions import Concat
|
||||||
|
from django_filters.rest_framework import CharFilter
|
||||||
from rest_framework import filters
|
from rest_framework import filters
|
||||||
from rest_framework.compat import coreapi, coreschema
|
from rest_framework.compat import coreapi, coreschema
|
||||||
|
|
||||||
from orgs.utils import current_org
|
from orgs.utils import current_org
|
||||||
|
from ops.models import CommandExecution
|
||||||
|
from common.drf.filters import BaseFilterSet
|
||||||
|
|
||||||
|
__all__ = ['CurrentOrgMembersFilter', 'CommandExecutionFilter']
|
||||||
__all__ = ['CurrentOrgMembersFilter']
|
|
||||||
|
|
||||||
|
|
||||||
class CurrentOrgMembersFilter(filters.BaseFilterBackend):
|
class CurrentOrgMembersFilter(filters.BaseFilterBackend):
|
||||||
|
@ -30,3 +34,22 @@ class CurrentOrgMembersFilter(filters.BaseFilterBackend):
|
||||||
else:
|
else:
|
||||||
queryset = queryset.filter(user__in=self._get_user_list())
|
queryset = queryset.filter(user__in=self._get_user_list())
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
|
class CommandExecutionFilter(BaseFilterSet):
|
||||||
|
hostname_ip = CharFilter(method='filter_hostname_ip')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = CommandExecution.hosts.through
|
||||||
|
fields = (
|
||||||
|
'id', 'asset', 'commandexecution', 'hostname_ip'
|
||||||
|
)
|
||||||
|
|
||||||
|
def filter_hostname_ip(self, queryset, name, value):
|
||||||
|
queryset = queryset.annotate(
|
||||||
|
hostname_ip=Concat(
|
||||||
|
F('asset__hostname'), Value('('),
|
||||||
|
F('asset__ip'), Value(')')
|
||||||
|
)
|
||||||
|
).filter(hostname_ip__icontains=value)
|
||||||
|
return queryset
|
||||||
|
|
Loading…
Reference in New Issue