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