From 0e534f32514f5bb373b6a072947572234619d27f Mon Sep 17 00:00:00 2001 From: Aaron3S Date: Wed, 21 Dec 2022 17:14:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/api/adhoc.py | 2 ++ apps/ops/api/job.py | 13 +++++++++---- apps/ops/api/playbook.py | 3 +++ apps/ops/serializers/job.py | 7 +++---- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/ops/api/adhoc.py b/apps/ops/api/adhoc.py index 8caa59beb..aa7b890c5 100644 --- a/apps/ops/api/adhoc.py +++ b/apps/ops/api/adhoc.py @@ -15,6 +15,8 @@ class AdHocViewSet(OrgBulkModelViewSet): permission_classes = () model = AdHoc + def allow_bulk_destroy(self, qs, filtered): + return True def get_queryset(self): queryset = super().get_queryset() return queryset.filter(creator=self.request.user) diff --git a/apps/ops/api/job.py b/apps/ops/api/job.py index 9b36a5aba..0f37732bd 100644 --- a/apps/ops/api/job.py +++ b/apps/ops/api/job.py @@ -23,6 +23,9 @@ class JobViewSet(OrgBulkModelViewSet): permission_classes = () model = Job + def allow_bulk_destroy(self, qs, filtered): + return True + def get_queryset(self): queryset = super().get_queryset() queryset = queryset.filter(creator=self.request.user) @@ -31,20 +34,21 @@ class JobViewSet(OrgBulkModelViewSet): return queryset def perform_create(self, serializer): + run_after_save = serializer.validated_data.pop('run_after_save', False) instance = serializer.save() - run_after_save = serializer.validated_data.get('run_after_save', False) if instance.instant or run_after_save: self.run_job(instance, serializer) def perform_update(self, serializer): + run_after_save = serializer.validated_data.pop('run_after_save', False) instance = serializer.save() - run_after_save = serializer.validated_data.get('run_after_save', False) if run_after_save: self.run_job(instance, serializer) - @staticmethod - def run_job(job, serializer): + def run_job(self, job, serializer): execution = job.create_execution() + execution.creator = self.request.user + execution.save() task = run_ops_job_execution.delay(execution.id) set_task_to_serializer_data(serializer, task) @@ -58,6 +62,7 @@ class JobExecutionViewSet(OrgBulkModelViewSet): def perform_create(self, serializer): instance = serializer.save() instance.job_version = instance.job.version + instance.creator = self.request.user instance.save() task = run_ops_job_execution.delay(instance.id) set_task_to_serializer_data(serializer, task) diff --git a/apps/ops/api/playbook.py b/apps/ops/api/playbook.py index 009bfc2b8..aaafacd58 100644 --- a/apps/ops/api/playbook.py +++ b/apps/ops/api/playbook.py @@ -21,6 +21,9 @@ class PlaybookViewSet(OrgBulkModelViewSet): permission_classes = () model = Playbook + def allow_bulk_destroy(self, qs, filtered): + return True + def get_queryset(self): queryset = super().get_queryset() queryset = queryset.filter(creator=self.request.user) diff --git a/apps/ops/serializers/job.py b/apps/ops/serializers/job.py index 005b88cdc..386c4e92f 100644 --- a/apps/ops/serializers/job.py +++ b/apps/ops/serializers/job.py @@ -9,12 +9,11 @@ from orgs.mixins.serializers import BulkOrgResourceModelSerializer class JobSerializer(BulkOrgResourceModelSerializer, PeriodTaskSerializerMixin): creator = ReadableHiddenField(default=serializers.CurrentUserDefault()) - run_after_save = serializers.BooleanField(label=_("Run after save"), read_only=True, default=False, required=False) + run_after_save = serializers.BooleanField(label=_("Run after save"), default=False, required=False) class Meta: model = Job - read_only_fields = ["id", "date_last_run", "date_created", "date_updated", "average_time_cost", - "run_after_save"] + read_only_fields = ["id", "date_last_run", "date_created", "date_updated", "average_time_cost"] fields = read_only_fields + [ "name", "instant", "type", "module", "args", "playbook", "assets", "runas_policy", "runas", "creator", "use_parameter_define", @@ -23,7 +22,7 @@ class JobSerializer(BulkOrgResourceModelSerializer, PeriodTaskSerializerMixin): "chdir", "comment", "summary", - "is_periodic", "interval", "crontab" + "is_periodic", "interval", "crontab", "run_after_save" ]