fix: Fixed the issue of user login statistics (#13440)

Co-authored-by: feng <1304903146@qq.com>
This commit is contained in:
fit2bot 2024-06-18 14:18:02 +08:00 committed by GitHub
parent ff126f3459
commit f42113afb9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -74,9 +74,13 @@ class DateTimeMixin:
query = {f'{query_field}__gte': t} query = {f'{query_field}__gte': t}
return qs.filter(**query) return qs.filter(**query)
@lazyproperty
def users(self):
return self.org.get_members()
def get_logs_queryset(self, queryset, query_params): def get_logs_queryset(self, queryset, query_params):
query = {} query = {}
users = self.org.get_members() users = self.users
if not self.org.is_root(): if not self.org.is_root():
if query_params == 'username': if query_params == 'username':
query = { query = {
@ -100,6 +104,13 @@ class DateTimeMixin:
queryset = self.get_logs_queryset(qs, 'username') queryset = self.get_logs_queryset(qs, 'username')
return queryset return queryset
@lazyproperty
def user_login_logs_on_the_system_queryset(self):
qs = UserLoginLog.objects.all()
qs = self.get_logs_queryset_filter(qs, 'datetime')
queryset = qs.filter(username__in=construct_userlogin_usernames(self.users))
return queryset
@lazyproperty @lazyproperty
def password_change_logs_queryset(self): def password_change_logs_queryset(self):
qs = PasswordChangeLog.objects.all() qs = PasswordChangeLog.objects.all()
@ -141,6 +152,7 @@ class DatesLoginMetricMixin:
ftp_logs_queryset: FTPLog.objects ftp_logs_queryset: FTPLog.objects
job_logs_queryset: JobLog.objects job_logs_queryset: JobLog.objects
login_logs_queryset: UserLoginLog.objects login_logs_queryset: UserLoginLog.objects
user_login_logs_on_the_system_queryset: UserLoginLog.objects
operate_logs_queryset: OperateLog.objects operate_logs_queryset: OperateLog.objects
password_change_logs_queryset: PasswordChangeLog.objects password_change_logs_queryset: PasswordChangeLog.objects
@ -241,7 +253,7 @@ class DatesLoginMetricMixin:
@lazyproperty @lazyproperty
def user_login_amount(self): def user_login_amount(self):
return self.login_logs_queryset.values('username').distinct().count() return self.user_login_logs_on_the_system_queryset.values('username').distinct().count()
@lazyproperty @lazyproperty
def operate_logs_amount(self): def operate_logs_amount(self):