perf: 优化 Session 支持 duration 字段

pull/12844/head
Bai 2024-03-20 15:48:01 +08:00 committed by Bryan
parent a6228f145d
commit cf1e048328
2 changed files with 11 additions and 1 deletions

View File

@ -2,6 +2,7 @@ from __future__ import unicode_literals
import os import os
import uuid import uuid
from datetime import timedelta
from django.conf import settings from django.conf import settings
from django.core.cache import cache from django.core.cache import cache
@ -233,6 +234,14 @@ class Session(OrgModelMixin):
target_ip = instance.get_target_ip() if instance else '' target_ip = instance.get_target_ip() if instance else ''
return target_ip return target_ip
@property
def duration(self):
date_end = self.date_end or timezone.now()
delta = date_end - self.date_start
# 去掉毫秒的显示
delta = timedelta(seconds=int(delta.total_seconds()))
return str(delta)
@classmethod @classmethod
def generate_fake(cls, count=100, is_finished=True): def generate_fake(cls, count=100, is_finished=True):
import random import random

View File

@ -37,13 +37,14 @@ class SessionSerializer(BulkOrgResourceModelSerializer):
"user", "asset", "user_id", "asset_id", 'account', 'account_id', "user", "asset", "user_id", "asset_id", 'account', 'account_id',
"protocol", 'type', "login_from", "remote_addr", "protocol", 'type', "login_from", "remote_addr",
"is_success", "is_finished", "has_replay", "has_command", "is_success", "is_finished", "has_replay", "has_command",
"date_start", "date_end", "comment", "terminal_display", "is_locked", "date_start", "date_end", "duration", "comment", "terminal_display", "is_locked",
'command_amount', 'error_reason' 'command_amount', 'error_reason'
] ]
fields_fk = ["terminal", ] fields_fk = ["terminal", ]
fields_custom = ["can_replay", "can_join", "can_terminate"] fields_custom = ["can_replay", "can_join", "can_terminate"]
fields = fields_small + fields_fk + fields_custom fields = fields_small + fields_fk + fields_custom
extra_kwargs = { extra_kwargs = {
"Duration": {'label': _('Duration')},
"protocol": {'label': _('Protocol')}, "protocol": {'label': _('Protocol')},
'user_id': {'label': _('User ID')}, 'user_id': {'label': _('User ID')},
'asset_id': {'label': _('Asset ID')}, 'asset_id': {'label': _('Asset ID')},