From 889cdca3b001a3e4069fbe2aa4f175656f2daccf Mon Sep 17 00:00:00 2001 From: wangruidong <940853815@qq.com> Date: Mon, 26 Feb 2024 18:51:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=B1=BB=E5=9E=8B=E6=90=9C=E7=B4=A2=E6=97=A0?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/audits/api.py | 7 ++----- apps/audits/filters.py | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/apps/audits/api.py b/apps/audits/api.py index 5a665777b..8bdc7e070 100644 --- a/apps/audits/api.py +++ b/apps/audits/api.py @@ -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'] diff --git a/apps/audits/filters.py b/apps/audits/filters.py index 078e68c2c..b82eadad3 100644 --- a/apps/audits/filters.py +++ b/apps/audits/filters.py @@ -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' + ]