From a1300e288634ed73075d57dc0accb7f758881cc9 Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Tue, 7 Feb 2023 09:49:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/audits/api.py | 4 ++-- apps/audits/signal_handlers.py | 4 ++++ apps/audits/utils.py | 9 +++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/audits/api.py b/apps/audits/api.py index 0fcde1396..06eae0fa1 100644 --- a/apps/audits/api.py +++ b/apps/audits/api.py @@ -49,8 +49,8 @@ class UserLoginCommonMixin: date_range_filter_fields = [ ('datetime', ('date_from', 'date_to')) ] - filterset_fields = ['username', 'ip', 'city', 'type', 'status', 'mfa'] - search_fields = ['username', 'ip', 'city'] + filterset_fields = ['id', 'username', 'ip', 'city', 'type', 'status', 'mfa'] + search_fields = ['id', 'username', 'ip', 'city'] class UserLoginLogViewSet(UserLoginCommonMixin, ListModelMixin, JMSGenericViewSet): diff --git a/apps/audits/signal_handlers.py b/apps/audits/signal_handlers.py index 7710273ce..2b76fac01 100644 --- a/apps/audits/signal_handlers.py +++ b/apps/audits/signal_handlers.py @@ -259,6 +259,10 @@ def generate_data(username, request, login_type=None, user_id=None): with translation.override('en'): backend = str(get_login_backend(request)) + if user_id is None: + user = User.objects.filter(username=username).first() + user_id = getattr(user, 'id', None) + data = { 'user_id': user_id, 'username': username, diff --git a/apps/audits/utils.py b/apps/audits/utils.py index d5cd4ff60..851ddae3b 100644 --- a/apps/audits/utils.py +++ b/apps/audits/utils.py @@ -6,7 +6,7 @@ from django.db import models from django.http import HttpResponse from django.utils.translation import gettext_lazy as _ -from common.utils import validate_ip, get_ip_city, get_logger +from common.utils import validate_ip, get_ip_city, get_logger, reverse from audits.const import ActivityChoices from settings.serializers import SettingsSerializer from .const import DEFAULT_CITY @@ -53,8 +53,13 @@ def write_login_log(*args, **kwargs): detail = _('User {} login into this service.[{}]').format( audit_log.username, login_status ) + detail_url = '%s?id=%s' % ( + reverse('api-audits:login-log-list', api_to_ui=True, is_audit=True,), + audit_log.id + ) post_activity_log.send( - sender=UserLoginLog, resource_id=user_id, detail=detail, + sender=UserLoginLog, resource_id=user_id, + detail=detail, detail_url=detail_url, type=ActivityChoices.login_log )