mirror of
https://github.com/ansible/awx.git
synced 2026-01-12 02:19:58 -03:30
Add name field for ad hoc commands, get relaunch working.
This commit is contained in:
parent
d48fbaa6b4
commit
02eda72bd9
@ -1483,12 +1483,14 @@ class JobCancelSerializer(JobSerializer):
|
||||
|
||||
class AdHocCommandSerializer(UnifiedJobSerializer):
|
||||
|
||||
name = serializers.CharField(source='name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = AdHocCommand
|
||||
fields = ('*', 'job_type', 'inventory', 'limit', 'credential',
|
||||
'module_name', 'module_args', 'forks', 'verbosity',
|
||||
'privilege_escalation')
|
||||
exclude = ('unified_job_template', 'name', 'description')
|
||||
exclude = ('unified_job_template', 'description')
|
||||
|
||||
def get_related(self, obj):
|
||||
res = super(AdHocCommandSerializer, self).get_related(obj)
|
||||
|
||||
@ -1232,6 +1232,15 @@ class AdHocCommandAccess(BaseAccess):
|
||||
def can_delete(self, obj):
|
||||
return False
|
||||
|
||||
def can_start(self, obj):
|
||||
return self.can_add({
|
||||
'credential': obj.credential_id,
|
||||
'inventory': obj.inventory_id,
|
||||
})
|
||||
|
||||
def can_cancel(self, obj):
|
||||
return self.can_read(obj) and obj.can_cancel
|
||||
|
||||
class AdHocCommandEventAccess(BaseAccess):
|
||||
'''
|
||||
I can see ad hoc command event records whenever I can read both ad hoc
|
||||
|
||||
@ -10,6 +10,7 @@ import logging
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils.text import Truncator
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.urlresolvers import reverse
|
||||
@ -199,11 +200,20 @@ class AdHocCommand(UnifiedJob):
|
||||
return dependencies
|
||||
|
||||
def copy(self):
|
||||
raise NotImplementedError
|
||||
presets = {}
|
||||
for kw in self.job_template._get_unified_job_field_names():
|
||||
presets[kw] = getattr(self, kw)
|
||||
return self.job_template.create_unified_job(**presets)
|
||||
data = {}
|
||||
for field in ('job_type', 'inventory_id', 'limit', 'credential_id',
|
||||
'module_name', 'module_args', 'forks', 'verbosity',
|
||||
'privilege_escalation'):
|
||||
data[field] = getattr(self, field)
|
||||
return AdHocCommand.objects.create(**data)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
update_fields = kwargs.get('update_fields', [])
|
||||
if not self.name:
|
||||
self.name = Truncator(u'%s: %s' % (self.module_name, self.module_args)).chars(512)
|
||||
if 'name' not in update_fields:
|
||||
update_fields.append('name')
|
||||
super(AdHocCommand, self).save(*args, **kwargs)
|
||||
|
||||
|
||||
class AdHocCommandEvent(CreatedModifiedModel):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user