mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-01-29 21:51:31 +00:00
feat: Add periodic display and validate job params
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from common.api.generic import JMSBulkModelViewSet
|
||||
from common.utils.http import is_true
|
||||
@@ -28,7 +29,7 @@ class AdHocViewSet(JMSBulkModelViewSet):
|
||||
def check_object_permissions(self, request, obj):
|
||||
if request.method != 'GET' and obj.creator != request.user:
|
||||
self.permission_denied(
|
||||
request, message={"detail": "Deleting other people's script is not allowed"}
|
||||
request, message={"detail": _("Deleting other people's script is not allowed")}
|
||||
)
|
||||
return super().check_object_permissions(request, obj)
|
||||
|
||||
|
||||
@@ -105,6 +105,7 @@ class JobViewSet(OrgBulkModelViewSet):
|
||||
|
||||
def perform_update(self, serializer):
|
||||
run_after_save = serializer.validated_data.pop('run_after_save', False)
|
||||
self._parameters = serializer.validated_data.pop('parameters', None)
|
||||
instance = serializer.save()
|
||||
if run_after_save:
|
||||
self.run_job(instance, serializer)
|
||||
|
||||
@@ -46,7 +46,7 @@ class PlaybookViewSet(JMSBulkModelViewSet):
|
||||
def check_object_permissions(self, request, obj):
|
||||
if request.method != 'GET' and obj.creator != request.user:
|
||||
self.permission_denied(
|
||||
request, message={"detail": "Deleting other people's playbook is not allowed"}
|
||||
request, message={"detail": _("Deleting other people's playbook is not allowed")}
|
||||
)
|
||||
return super().check_object_permissions(request, obj)
|
||||
|
||||
|
||||
@@ -38,6 +38,18 @@ class JobSerializer(BulkOrgResourceModelSerializer, PeriodTaskSerializerMixin, W
|
||||
user = request.user if request else None
|
||||
return user
|
||||
|
||||
def get_periodic_variable(self, variables):
|
||||
periodic_variable = {}
|
||||
for variable in variables:
|
||||
periodic_variable[variable['var_name']] = variable['default_value']
|
||||
return periodic_variable
|
||||
|
||||
def validate(self, attrs):
|
||||
attrs = super().validate(attrs)
|
||||
if attrs.get('is_periodic') is True:
|
||||
attrs['periodic_variable'] = self.get_periodic_variable(attrs.get('variable', []))
|
||||
return attrs
|
||||
|
||||
class Meta:
|
||||
model = Job
|
||||
read_only_fields = [
|
||||
|
||||
Reference in New Issue
Block a user