mirror of https://github.com/jumpserver/jumpserver
				
				
				
			feat: 优化api
							parent
							
								
									5198ac1cc0
								
							
						
					
					
						commit
						0e534f3251
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue