From 0fd43f48f051aa7ee09e81a558df688f68b9f4ed Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 23 Mar 2020 17:55:28 +0800 Subject: [PATCH] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E5=9B=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8D=E6=94=AF=E6=8C=81timezone=E5=BC=95=E8=B5=B7?= =?UTF-8?q?=E7=9A=84=E4=BB=AA=E8=A1=A8=E7=9B=98=E6=95=B0=E6=8D=AE=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/views/index.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/jumpserver/views/index.py b/apps/jumpserver/views/index.py index 5cd034a2d..1bcb2a57e 100644 --- a/apps/jumpserver/views/index.py +++ b/apps/jumpserver/views/index.py @@ -24,7 +24,8 @@ class MonthLoginMetricMixin: @lazyproperty def session_month_dates(self): - return self.session_month.dates('date_start', 'day') + dates = self.session_month.dates('date_start', 'day') + return dates def get_month_day_metrics(self): month_str = [ @@ -57,12 +58,22 @@ class MonthLoginMetricMixin: def asset_disabled_total(self): return Asset.objects.filter(is_active=False).count() + @staticmethod + def get_date_start_2_end(d): + time_min = timezone.datetime.min.time() + time_max = timezone.datetime.max.time() + tz = timezone.get_current_timezone() + ds = timezone.datetime.combine(d, time_min).replace(tzinfo=tz) + de = timezone.datetime.combine(d, time_max).replace(tzinfo=tz) + return ds, de + def get_date_login_count(self, date): tp = "LOGIN" count = self.__get_data_from_cache(date, tp) if count is not None: return count - count = Session.objects.filter(date_start__date=date).count() + ds, de = self.get_date_start_2_end(date) + count = Session.objects.filter(date_start__range=(ds, de)).count() self.__set_data_to_cache(date, tp, count) return count @@ -80,7 +91,8 @@ class MonthLoginMetricMixin: count = self.__get_data_from_cache(date, tp) if count is not None: return count - count = Session.objects.filter(date_start__date=date)\ + ds, de = self.get_date_start_2_end(date) + count = Session.objects.filter(date_start__range=(ds, de))\ .values('user').distinct().count() self.__set_data_to_cache(date, tp, count) return count @@ -97,7 +109,8 @@ class MonthLoginMetricMixin: count = self.__get_data_from_cache(date, tp) if count is not None: return count - count = Session.objects.filter(date_start__date=date) \ + ds, de = self.get_date_start_2_end(date) + count = Session.objects.filter(date_start__range=(ds, de)) \ .values('asset').distinct().count() self.__set_data_to_cache(date, tp, count) return count