mirror of https://github.com/jumpserver/jumpserver
				
				
				
			Merge pull request #4098 from jumpserver/fix-ops-adhoc
[Fix] ops.models.adhoc (#4096)pull/4102/head
						commit
						eef172d0e2
					
				| 
						 | 
				
			
			@ -118,26 +118,6 @@ class Task(PeriodTaskModelMixin, OrgModelMixin):
 | 
			
		|||
        kwargs = {"callback": self.callback}
 | 
			
		||||
        return name, task, args, kwargs
 | 
			
		||||
 | 
			
		||||
    @lazyproperty
 | 
			
		||||
    def last_success(self):
 | 
			
		||||
        return self._last_adhocexecution(True, 'contacted')
 | 
			
		||||
 | 
			
		||||
    @lazyproperty
 | 
			
		||||
    def last_failure(self):
 | 
			
		||||
        return self._last_adhocexecution(False, 'dark')
 | 
			
		||||
 | 
			
		||||
    def _last_adhocexecution(self, is_success, key):
 | 
			
		||||
        obj = AdHocExecution.objects.filter(task_id=self.id, is_success=is_success).order_by('-date_finished').first()
 | 
			
		||||
        body = obj.summary and obj.summary.get(key)
 | 
			
		||||
 | 
			
		||||
        if body:
 | 
			
		||||
            asset, body = body.popitem()
 | 
			
		||||
            if body:
 | 
			
		||||
                action, body = body.popitem()
 | 
			
		||||
                return asset, action, (body or '') and body.get('msg', '')
 | 
			
		||||
            return asset, '', ''
 | 
			
		||||
        return '', '', ''
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return self.name + '@' + str(self.org_id)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,14 +60,8 @@ class TaskSerializer(serializers.ModelSerializer):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class TaskDetailSerializer(TaskSerializer):
 | 
			
		||||
    last_success = serializers.SerializerMethodField()
 | 
			
		||||
    last_failure = serializers.SerializerMethodField()
 | 
			
		||||
 | 
			
		||||
    def get_last_success(self, obj):
 | 
			
		||||
        return obj.last_success[0], ''
 | 
			
		||||
 | 
			
		||||
    def get_last_failure(self, obj):
 | 
			
		||||
        return obj.last_failure[0], ' => '.join(obj.last_failure[1:])
 | 
			
		||||
    last_success = serializers.ListField(source='latest_execution.success_hosts')
 | 
			
		||||
    last_failure = serializers.DictField(source='latest_execution.failed_hosts')
 | 
			
		||||
 | 
			
		||||
    class Meta(TaskSerializer.Meta):
 | 
			
		||||
        fields = TaskSerializer.Meta.fields + ['last_success', 'last_failure']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue