mirror of https://github.com/jumpserver/jumpserver
fix: 操作日志资源类型搜索无效
parent
4cfd1bc047
commit
889cdca3b0
|
@ -31,7 +31,7 @@ from terminal.models import default_storage
|
|||
from users.models import User
|
||||
from .backends import TYPE_ENGINE_MAPPING
|
||||
from .const import ActivityChoices
|
||||
from .filters import UserSessionFilterSet
|
||||
from .filters import UserSessionFilterSet, OperateLogFilterSet
|
||||
from .models import (
|
||||
FTPLog, UserLoginLog, OperateLog, PasswordChangeLog,
|
||||
ActivityLog, JobLog, UserSession
|
||||
|
@ -205,10 +205,7 @@ class OperateLogViewSet(OrgReadonlyModelViewSet):
|
|||
date_range_filter_fields = [
|
||||
('datetime', ('date_from', 'date_to'))
|
||||
]
|
||||
filterset_fields = [
|
||||
'user', 'action', 'resource_type', 'resource',
|
||||
'remote_addr'
|
||||
]
|
||||
filterset_class = OperateLogFilterSet
|
||||
search_fields = ['resource', 'user']
|
||||
ordering = ['-datetime']
|
||||
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
from django.apps import apps
|
||||
from django.utils import translation
|
||||
|
||||
from django_filters import rest_framework as drf_filters
|
||||
from rest_framework import filters
|
||||
from rest_framework.compat import coreapi, coreschema
|
||||
|
||||
from common.drf.filters import BaseFilterSet
|
||||
from common.sessions.cache import user_session_manager
|
||||
from orgs.utils import current_org
|
||||
from .models import UserSession
|
||||
from .models import UserSession, OperateLog
|
||||
|
||||
__all__ = ['CurrentOrgMembersFilter']
|
||||
|
||||
|
@ -50,3 +52,22 @@ class UserSessionFilterSet(BaseFilterSet):
|
|||
class Meta:
|
||||
model = UserSession
|
||||
fields = ['id', 'ip', 'city', 'type']
|
||||
|
||||
|
||||
class OperateLogFilterSet(BaseFilterSet):
|
||||
resource_type = drf_filters.CharFilter(method='filter_resource_type')
|
||||
|
||||
@staticmethod
|
||||
def filter_resource_type(queryset, name, resource_type):
|
||||
current_lang = translation.get_language()
|
||||
with translation.override(current_lang):
|
||||
mapper = {str(m._meta.verbose_name): m._meta.verbose_name_raw for m in apps.get_models()}
|
||||
tp = mapper.get(resource_type)
|
||||
queryset = queryset.filter(resource_type=tp)
|
||||
return queryset
|
||||
|
||||
class Meta:
|
||||
model = OperateLog
|
||||
fields = [
|
||||
'user', 'action', 'resource', 'remote_addr'
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue