perf: change password dashboard

pull/15630/merge^2
feng 2025-07-21 19:06:56 +08:00
parent dab97ea16c
commit 81b1deebbe
1 changed files with 10 additions and 6 deletions

View File

@ -38,7 +38,8 @@ class UserChangeSecretApi(DateRangeMixin, APIView):
except Exception:
logger.debug(f"Failed to get city for IP {ip}, skipping", exc_info=True)
continue
return dict(data)
return [{'name': k, 'value': v} for k, v in data.items()]
def get_change_password_metrics(self, queryset):
filtered_queryset = self.filter_by_date_range(queryset, 'datetime')
@ -64,14 +65,17 @@ class UserChangeSecretApi(DateRangeMixin, APIView):
total = qs.count()
change_password_top10_users = qs.values(
'user').annotate(user_count=Count('id')).order_by('-user_count')[:10]
'user').annotate(count=Count('id')).order_by('-count')[:10]
change_password_top10_change_bys = qs.values(
'change_by').annotate(user_count=Count('id')).order_by('-user_count')[:10]
'change_by').annotate(count=Count('id')).order_by('-count')[:10]
data['total_count_change_password'] = {
'total': total,
'user_total': qs.values('user').distinct().count(),
'change_by_total': qs.values('change_by').distinct().count(),
}
data['total'] = total
data['user_total'] = qs.values('user').distinct().count()
data['change_by_total'] = qs.values('change_by').distinct().count()
data['change_password_top10_users'] = list(change_password_top10_users)
data['change_password_top10_change_bys'] = list(change_password_top10_change_bys)