fix: Login log city translate

This commit is contained in:
wangruidong
2026-07-06 16:02:14 +08:00
committed by 老广
parent 7e948f2919
commit e6526e77a6
2 changed files with 18 additions and 1 deletions

View File

@@ -12,7 +12,7 @@ from django.utils.translation import gettext, gettext_lazy as _
from common.db.encoder import ModelJSONFieldEncoder
from common.sessions.cache import user_session_manager
from common.utils import lazyproperty, i18n_trans
from common.utils import lazyproperty, i18n_trans, get_ip_city
from ops.models import JobExecution
from orgs.mixins.models import OrgModelMixin, Organization
from orgs.utils import current_org
@@ -38,6 +38,13 @@ __all__ = [
]
def _get_city_display(ip, city='') -> str:
try:
return get_ip_city(ip) or gettext(city or '')
except Exception:
return gettext(city or '')
class JobLog(JobExecution):
@property
def creator_name(self) -> str:
@@ -241,6 +248,10 @@ class UserLoginLog(models.Model):
def backend_display(self) -> str:
return gettext(self.backend)
@lazyproperty
def city_display(self) -> str:
return _get_city_display(self.ip, self.city)
@classmethod
def get_login_logs(cls, date_from=None, date_to=None, user=None, keyword=None):
login_logs = cls.objects.all()
@@ -321,6 +332,10 @@ class UserSession(models.Model):
def __str__(self):
return '%s(%s)' % (self.user, self.ip)
@lazyproperty
def city_display(self) -> str:
return _get_city_display(self.ip, self.city)
@property
def backend_display(self) -> str:
return gettext(self.backend)

View File

@@ -75,6 +75,7 @@ class UserLoginLogSerializer(serializers.ModelSerializer):
mfa = LabeledChoiceField(choices=MFAChoices.choices, label=_("MFA"))
type = LabeledChoiceField(choices=LoginTypeChoices.choices, label=_("Type"))
status = LabeledChoiceField(choices=LoginStatusChoices.choices, label=_("Status"))
city = serializers.ReadOnlyField(source='city_display', label=_("Login city"))
class Meta:
model = models.UserLoginLog
@@ -223,6 +224,7 @@ class UserSessionSerializer(serializers.ModelSerializer):
user = ObjectRelatedField(required=False, queryset=User.objects, label=_('User'))
date_expired = serializers.DateTimeField(format="%Y/%m/%d %H:%M:%S", label=_('Date expired'))
is_current_user_session = serializers.SerializerMethodField()
city = serializers.ReadOnlyField(source='city_display', label=_("Login city"))
class Meta:
model = models.UserSession