mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-11 09:25:03 +00:00
fix: Login log city translate
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user