mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-05-17 04:45:37 +00:00
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
from django.http.response import JsonResponse
|
|
from rest_framework.views import APIView
|
|
|
|
from common.permissions import IsValidLicense
|
|
from rbac.permissions import RBACPermission
|
|
from reports.mixins import build_user_login_report, export_table_response
|
|
|
|
__all__ = ['UserReportApi']
|
|
|
|
|
|
class UserReportApi(APIView):
|
|
http_method_names = ['get']
|
|
rbac_perms = {
|
|
'GET': 'rbac.view_userloginreport',
|
|
}
|
|
permission_classes = [RBACPermission, IsValidLicense]
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
payload, table, _ = build_user_login_report(filters={
|
|
'start': request.query_params.get('start'),
|
|
'end': request.query_params.get('end'),
|
|
'range_preset': request.query_params.get('range_preset'),
|
|
'user_id': request.query_params.get('user_id', ''),
|
|
}, days=request.query_params.get('days', 7))
|
|
export = request.query_params.get('export')
|
|
if export in ('table', 'csv', 'xlsx'):
|
|
response = export_table_response(table, export)
|
|
if export == 'table':
|
|
return JsonResponse(response, status=200)
|
|
return response
|
|
return JsonResponse(payload, status=200) |