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 users.models import User
|
||||||
from .backends import TYPE_ENGINE_MAPPING
|
from .backends import TYPE_ENGINE_MAPPING
|
||||||
from .const import ActivityChoices
|
from .const import ActivityChoices
|
||||||
from .filters import UserSessionFilterSet
|
from .filters import UserSessionFilterSet, OperateLogFilterSet
|
||||||
from .models import (
|
from .models import (
|
||||||
FTPLog, UserLoginLog, OperateLog, PasswordChangeLog,
|
FTPLog, UserLoginLog, OperateLog, PasswordChangeLog,
|
||||||
ActivityLog, JobLog, UserSession
|
ActivityLog, JobLog, UserSession
|
||||||
|
@ -205,10 +205,7 @@ class OperateLogViewSet(OrgReadonlyModelViewSet):
|
||||||
date_range_filter_fields = [
|
date_range_filter_fields = [
|
||||||
('datetime', ('date_from', 'date_to'))
|
('datetime', ('date_from', 'date_to'))
|
||||||
]
|
]
|
||||||
filterset_fields = [
|
filterset_class = OperateLogFilterSet
|
||||||
'user', 'action', 'resource_type', 'resource',
|
|
||||||
'remote_addr'
|
|
||||||
]
|
|
||||||
search_fields = ['resource', 'user']
|
search_fields = ['resource', 'user']
|
||||||
ordering = ['-datetime']
|
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 django_filters import rest_framework as drf_filters
|
||||||
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 common.drf.filters import BaseFilterSet
|
from common.drf.filters import BaseFilterSet
|
||||||
from common.sessions.cache import user_session_manager
|
from common.sessions.cache import user_session_manager
|
||||||
from orgs.utils import current_org
|
from orgs.utils import current_org
|
||||||
from .models import UserSession
|
from .models import UserSession, OperateLog
|
||||||
|
|
||||||
__all__ = ['CurrentOrgMembersFilter']
|
__all__ = ['CurrentOrgMembersFilter']
|
||||||
|
|
||||||
|
@ -50,3 +52,22 @@ class UserSessionFilterSet(BaseFilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserSession
|
model = UserSession
|
||||||
fields = ['id', 'ip', 'city', 'type']
|
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