perf: Skip alert if login city seen in past 7 days

pull/15313/head
wangruidong 2025-04-29 16:19:02 +08:00 committed by 老广
parent 1bb44e783a
commit 282ca25504
1 changed files with 10 additions and 5 deletions

View File

@ -1,16 +1,16 @@
# -*- coding: utf-8 -*-
#
import ipaddress
from datetime import datetime, timedelta
from urllib.parse import urljoin, urlparse
from django.conf import settings
from django.utils.translation import gettext_lazy as _
from audits.const import DEFAULT_CITY
from users.models import User
from audits.models import UserLoginLog
from common.utils import get_ip_city, get_request_ip
from common.utils import get_logger, get_object_or_none
from common.utils import validate_ip, get_ip_city, get_request_ip
from users.models import User
from .notifications import DifferentCityLoginMessage
logger = get_logger(__file__)
@ -33,8 +33,13 @@ def check_different_city_login_if_need(user, request):
return
city = get_ip_city(ip)
last_city = get_ip_city(last_user_login.ip)
if city == last_city:
last_cities = UserLoginLog.objects.filter(
datetime__gte=datetime.now() - timedelta(days=7),
username__in=usernames,
status=True
).exclude(city__in=city_white).values_list('city', flat=True).distinct()
if city in last_cities:
return
DifferentCityLoginMessage(user, ip, city).publish_async()