fix: 修改 job 审计日志

pull/9614/head^2
Aaron3S 2023-02-17 19:58:43 +08:00 committed by Jiangjie.Bai
parent 40b49e258e
commit a79a766a6a
11 changed files with 41 additions and 24 deletions

View File

@ -11,15 +11,14 @@ from rest_framework.permissions import IsAuthenticated
from common.api import JMSGenericViewSet
from common.drf.filters import DatetimeRangeFilter
from common.plugins.es import QuerySet as ESQuerySet
from ops.models.job import JobAuditLog
from orgs.mixins.api import OrgGenericViewSet, OrgBulkModelViewSet
from orgs.utils import current_org, tmp_to_root_org
from orgs.models import Organization
from users.models import User
from .backends import TYPE_ENGINE_MAPPING
from .const import ActivityChoices
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog, ActivityLog
from .serializers import FTPLogSerializer, UserLoginLogSerializer, JobAuditLogSerializer
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog, ActivityLog, JobLog
from .serializers import FTPLogSerializer, UserLoginLogSerializer, JobLogSerializer
from .serializers import (
OperateLogSerializer, OperateLogActionDetailSerializer,
PasswordChangeLogSerializer, ActivityUnionLogSerializer,
@ -27,13 +26,13 @@ from .serializers import (
class JobAuditViewSet(OrgBulkModelViewSet):
model = JobAuditLog
model = JobLog
extra_filter_backends = [DatetimeRangeFilter]
date_range_filter_fields = [
('date_start', ('date_from', 'date_to'))
]
search_fields = ['creator__name', 'material']
serializer_class = JobAuditLogSerializer
serializer_class = JobLogSerializer
ordering = ['-date_start']
http_method_names = ('get', 'head', 'options')

View File

@ -27,4 +27,16 @@ class Migration(migrations.Migration):
'ordering': ('-datetime',),
},
),
migrations.CreateModel(
name='JobLog',
fields=[
],
options={
'verbose_name': 'Job audit log',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('ops.jobexecution',),
),
]

View File

@ -7,6 +7,7 @@ from django.utils.translation import gettext, ugettext_lazy as _
from common.db.encoder import ModelJSONFieldEncoder
from common.utils import lazyproperty
from ops.models import JobExecution
from orgs.mixins.models import OrgModelMixin, Organization
from orgs.utils import current_org
from .const import (
@ -24,9 +25,20 @@ __all__ = [
"ActivityLog",
"PasswordChangeLog",
"UserLoginLog",
"JobLog"
]
class JobLog(JobExecution):
@property
def creator_name(self):
return self.creator.name
class Meta:
proxy = True
verbose_name = _("Job audit log")
class FTPLog(OrgModelMixin):
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
user = models.CharField(max_length=128, verbose_name=_("User"))

View File

@ -7,7 +7,6 @@ from audits.backends.db import OperateLogStore
from common.serializers.fields import LabeledChoiceField
from common.utils import reverse, i18n_trans
from common.utils.timezone import as_current_tz
from ops.models.job import JobAuditLog
from ops.serializers.job import JobExecutionSerializer
from terminal.models import Session
from . import models
@ -18,9 +17,9 @@ from .const import (
)
class JobAuditLogSerializer(JobExecutionSerializer):
class JobLogSerializer(JobExecutionSerializer):
class Meta:
model = JobAuditLog
model = models.JobLog
read_only_fields = [
"id", "material", "time_cost", 'date_start',
'date_finished', 'date_created',

View File

@ -159,7 +159,7 @@ def on_django_start_set_operate_log_monitor_models(sender, **kwargs):
'MessageContent', 'SiteMessage',
'PlatformAutomation', 'PlatformProtocol', 'Protocol',
'HistoricalAccount', 'GatheredUser', 'ApprovalRule',
'BaseAutomation', 'CeleryTask', 'Command', 'JobAuditLog',
'BaseAutomation', 'CeleryTask', 'Command', 'JobLog',
'ConnectionToken', 'SessionJoinRecord',
'HistoricalJob', 'Status', 'TicketStep', 'Ticket',
'UserAssetGrantedTreeNodeRelation', 'TicketAssignee',

View File

@ -13,11 +13,11 @@ from rest_framework.views import APIView
from assets.const import AllTypes
from assets.models import Asset
from audits.const import LoginStatusChoices
from audits.models import UserLoginLog, PasswordChangeLog, OperateLog, FTPLog
from audits.models import UserLoginLog, PasswordChangeLog, OperateLog, FTPLog, JobLog
from common.utils import lazyproperty
from common.utils.timezone import local_now, local_zero_hour
from ops.const import JobStatus
from ops.models import Job, JobExecution, JobAuditLog
from ops.models import Job, JobExecution
from orgs.caches import OrgResourceStatisticsCache
from orgs.utils import current_org
from terminal.models import Session, Command
@ -123,7 +123,7 @@ class DateTimeMixin:
@lazyproperty
def job_logs_queryset(self):
t = self.days_to_datetime
queryset = JobAuditLog.objects.filter(date_created__gte=t)
queryset = JobLog.objects.filter(date_created__gte=t)
return queryset
@lazyproperty
@ -138,7 +138,7 @@ class DatesLoginMetricMixin:
command_queryset: Command.objects
sessions_queryset: Session.objects
ftp_logs_queryset: OperateLog.objects
job_logs_queryset: JobAuditLog.objects
job_logs_queryset: JobLog.objects
login_logs_queryset: UserLoginLog.objects
operate_logs_queryset: OperateLog.objects
password_change_logs_queryset: PasswordChangeLog.objects

View File

@ -64,5 +64,8 @@ class Migration(migrations.Migration):
name='material',
field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Material'),
),
migrations.DeleteModel(
name='JobAuditLog',
),
migrations.RunPython(compatible),
]

View File

@ -9,7 +9,7 @@ from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
__all__ = ["Job", "JobExecution", "JobAuditLog"]
__all__ = ["Job", "JobExecution"]
from simple_history.models import HistoricalRecords
@ -362,11 +362,3 @@ class JobExecution(JMSOrgBaseModel):
ordering = ['-date_created']
class JobAuditLog(JobExecution):
@property
def creator_name(self):
return self.creator.name
class Meta:
proxy = True
verbose_name = _("Job audit log")

View File

@ -30,7 +30,7 @@ system_user_perms = (
_auditor_perms = (
('rbac', 'menupermission', 'view', 'audit'),
('audits', '*', '*', '*'),
('ops', 'jobauditlog', '*', '*'),
('audits', 'joblog', '*', '*'),
('terminal', 'commandstorage', 'view', 'commandstorage'),
('terminal', 'sessionreplay', 'view,download', 'sessionreplay'),
('terminal', 'session', '*', '*'),

View File

@ -79,6 +79,7 @@ exclude_permissions = (
('ops', 'celerytaskexecution', 'add,change,delete', 'celerytaskexecution'),
('orgs', 'organizationmember', '*', '*'),
('settings', 'setting', 'add,change,delete', 'setting'),
('audits', 'joblog', 'add,delete,change', '*'),
('audits', 'operatelog', 'add,delete,change', 'operatelog'),
('audits', 'activitylog', 'add,delete,change', 'activitylog'),
('audits', 'passwordchangelog', 'add,change,delete', 'passwordchangelog'),

View File

@ -95,7 +95,6 @@ special_pid_mapper = {
'terminal.endpointrule': 'terminal_node',
'audits.ftplog': 'terminal',
'perms.view_myassets': 'my_assets',
'ops.jobauditlog': 'audits',
'ops.celerytask': 'task_center',
'ops.view_celerytaskexecution': 'task_center',
'ops.view_taskmonitor': 'task_center',