mirror of https://github.com/jumpserver/jumpserver
fix: 修改 job 审计日志
parent
40b49e258e
commit
a79a766a6a
|
@ -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')
|
||||
|
||||
|
|
|
@ -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',),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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', '*', '*'),
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue