mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-12-21 11:33:03 +00:00
perf: Add a diff field to operate-log export
This commit is contained in:
committed by
Jiangjie Bai
parent
fe13221d88
commit
944226866c
@@ -43,7 +43,7 @@ from .serializers import (
|
|||||||
OperateLogSerializer, OperateLogActionDetailSerializer,
|
OperateLogSerializer, OperateLogActionDetailSerializer,
|
||||||
PasswordChangeLogSerializer, ActivityUnionLogSerializer,
|
PasswordChangeLogSerializer, ActivityUnionLogSerializer,
|
||||||
FileSerializer, UserSessionSerializer, JobsAuditSerializer,
|
FileSerializer, UserSessionSerializer, JobsAuditSerializer,
|
||||||
ServiceAccessLogSerializer
|
ServiceAccessLogSerializer, OperateLogFullSerializer
|
||||||
)
|
)
|
||||||
from .utils import construct_userlogin_usernames, record_operate_log_and_activity_log
|
from .utils import construct_userlogin_usernames, record_operate_log_and_activity_log
|
||||||
|
|
||||||
@@ -256,7 +256,9 @@ class OperateLogViewSet(OrgReadonlyModelViewSet):
|
|||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.is_action_detail:
|
if self.is_action_detail:
|
||||||
return OperateLogActionDetailSerializer
|
return OperateLogActionDetailSerializer
|
||||||
return super().get_serializer_class()
|
elif self.request.query_params.get('format'):
|
||||||
|
return OperateLogFullSerializer
|
||||||
|
return OperateLogSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
current_org_id = str(current_org.id)
|
current_org_id = str(current_org.id)
|
||||||
|
|||||||
@@ -127,6 +127,21 @@ class OperateLogSerializer(BulkOrgResourceModelSerializer):
|
|||||||
return i18n_trans(instance.resource)
|
return i18n_trans(instance.resource)
|
||||||
|
|
||||||
|
|
||||||
|
class DiffFieldSerializer(serializers.JSONField):
|
||||||
|
def to_file_representation(self, value):
|
||||||
|
row = getattr(self, '_row') or {}
|
||||||
|
attrs = {'diff': value, 'resource_type': row.get('resource_type')}
|
||||||
|
instance = type('OperateLog', (), attrs)
|
||||||
|
return OperateLogStore.convert_diff_friendly(instance)
|
||||||
|
|
||||||
|
|
||||||
|
class OperateLogFullSerializer(OperateLogSerializer):
|
||||||
|
diff = DiffFieldSerializer(label=_("Diff"))
|
||||||
|
|
||||||
|
class Meta(OperateLogSerializer.Meta):
|
||||||
|
fields = OperateLogSerializer.Meta.fields + ['diff']
|
||||||
|
|
||||||
|
|
||||||
class PasswordChangeLogSerializer(serializers.ModelSerializer):
|
class PasswordChangeLogSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.PasswordChangeLog
|
model = models.PasswordChangeLog
|
||||||
|
|||||||
@@ -183,6 +183,7 @@ class BaseFileRenderer(LogMixin, BaseRenderer):
|
|||||||
for item in data:
|
for item in data:
|
||||||
row = []
|
row = []
|
||||||
for field in render_fields:
|
for field in render_fields:
|
||||||
|
field._row = item
|
||||||
value = item.get(field.field_name)
|
value = item.get(field.field_name)
|
||||||
value = self.render_value(field, value)
|
value = self.render_value(field, value)
|
||||||
row.append(value)
|
row.append(value)
|
||||||
|
|||||||
Reference in New Issue
Block a user