mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-12-15 08:32:48 +00:00
Compare commits
3 Commits
refactor_p
...
pr@dev@top
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1f3aa21be | ||
|
|
2b1fdb937b | ||
|
|
1e754546f1 |
@@ -15,6 +15,7 @@ class Device:
|
||||
self.__load_driver(driver_path)
|
||||
# open device
|
||||
self.__open_device()
|
||||
self.__reset_key_store()
|
||||
|
||||
def close(self):
|
||||
if self.__device is None:
|
||||
@@ -68,3 +69,12 @@ class Device:
|
||||
if ret != 0:
|
||||
raise PiicoError("open piico device failed", ret)
|
||||
self.__device = device
|
||||
|
||||
def __reset_key_store(self):
|
||||
if self._driver is None:
|
||||
raise PiicoError("no driver loaded", 0)
|
||||
if self.__device is None:
|
||||
raise PiicoError("device not open", 0)
|
||||
ret = self._driver.SPII_ResetModule(self.__device)
|
||||
if ret != 0:
|
||||
raise PiicoError("reset device failed", ret)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from collections import defaultdict
|
||||
|
||||
from django.core.cache import cache
|
||||
from django.db.models import Count, Max, F, CharField, Q
|
||||
from django.db.models.functions import Cast
|
||||
from django.http.response import JsonResponse
|
||||
@@ -144,6 +145,7 @@ class DateTimeMixin:
|
||||
|
||||
|
||||
class DatesLoginMetricMixin:
|
||||
days: int
|
||||
dates_list: list
|
||||
date_start_end: tuple
|
||||
command_type_queryset_list: list
|
||||
@@ -155,6 +157,8 @@ class DatesLoginMetricMixin:
|
||||
operate_logs_queryset: OperateLog.objects
|
||||
password_change_logs_queryset: PasswordChangeLog.objects
|
||||
|
||||
CACHE_TIMEOUT = 60
|
||||
|
||||
@lazyproperty
|
||||
def get_type_to_assets(self):
|
||||
result = Asset.objects.annotate(type=F('platform__type')). \
|
||||
@@ -214,19 +218,34 @@ class DatesLoginMetricMixin:
|
||||
return date_metrics_dict.get('id', [])
|
||||
|
||||
def get_dates_login_times_assets(self):
|
||||
cache_key = f"stats:top10_assets:{self.days}"
|
||||
data = cache.get(cache_key)
|
||||
if data is not None:
|
||||
return data
|
||||
|
||||
assets = self.sessions_queryset.values("asset") \
|
||||
.annotate(total=Count("asset")) \
|
||||
.annotate(last=Cast(Max("date_start"), output_field=CharField())) \
|
||||
.order_by("-total")
|
||||
return list(assets[:10])
|
||||
|
||||
result = list(assets[:10])
|
||||
cache.set(cache_key, result, self.CACHE_TIMEOUT)
|
||||
return result
|
||||
|
||||
def get_dates_login_times_users(self):
|
||||
cache_key = f"stats:top10_users:{self.days}"
|
||||
data = cache.get(cache_key)
|
||||
if data is not None:
|
||||
return data
|
||||
|
||||
users = self.sessions_queryset.values("user_id") \
|
||||
.annotate(total=Count("user_id")) \
|
||||
.annotate(user=Max('user')) \
|
||||
.annotate(last=Cast(Max("date_start"), output_field=CharField())) \
|
||||
.order_by("-total")
|
||||
return list(users[:10])
|
||||
result = list(users[:10])
|
||||
cache.set(cache_key, result, self.CACHE_TIMEOUT)
|
||||
return result
|
||||
|
||||
def get_dates_login_record_sessions(self):
|
||||
sessions = self.sessions_queryset.order_by('-date_start')
|
||||
|
||||
Reference in New Issue
Block a user