mirror of
https://github.com/ansible/awx.git
synced 2026-01-14 11:20:39 -03:30
Better handling of foreign key parameters for (re)launching jobs. Fixes https://trello.com/c/Ty5cjHBd
This commit is contained in:
parent
9dfa26fa58
commit
7e94282934
@ -296,16 +296,22 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique):
|
||||
create_kwargs = {}
|
||||
create_kwargs[parent_field_name] = self
|
||||
for field_name in self._get_unified_job_field_names():
|
||||
if field_name in kwargs:
|
||||
create_kwargs[field_name] = kwargs[field_name]
|
||||
continue
|
||||
# Foreign keys can be specified as field_name or field_name_id.
|
||||
if hasattr(self, '%s_id' % field_name) and ('%s_id' % field_name) in kwargs:
|
||||
create_kwargs['%s_id' % field_name] = kwargs['%s_id' % field_name] = kwargs["%s_id" % field_name]
|
||||
continue
|
||||
if not hasattr(self, field_name):
|
||||
continue
|
||||
create_kwargs[field_name] = getattr(self, field_name)
|
||||
id_field_name = '%s_id' % field_name
|
||||
if hasattr(self, id_field_name):
|
||||
if field_name in kwargs:
|
||||
value = kwargs[field_name]
|
||||
elif id_field_name in kwargs:
|
||||
value = kwargs[id_field_name]
|
||||
else:
|
||||
value = getattr(self, id_field_name)
|
||||
if hasattr(value, 'id'):
|
||||
value = value.id
|
||||
create_kwargs[id_field_name] = value
|
||||
elif field_name in kwargs:
|
||||
create_kwargs[field_name] = kwargs[field_name]
|
||||
elif hasattr(self, field_name):
|
||||
create_kwargs[field_name] = getattr(self, field_name)
|
||||
kwargs = self._update_unified_job_kwargs(**create_kwargs)
|
||||
unified_job = unified_job_class(**create_kwargs)
|
||||
if save_unified_job:
|
||||
|
||||
@ -1036,6 +1036,12 @@ class JobTemplateTest(BaseJobTestMixin, django.test.TestCase):
|
||||
j = Job.objects.get(pk=response['job'])
|
||||
self.assertTrue(j.status == 'new')
|
||||
|
||||
with self.current_user(self.user_sue):
|
||||
response = self.post(launch_url, {'credential': self.cred_doug.pk}, expect=202)
|
||||
j = Job.objects.get(pk=response['job'])
|
||||
self.assertTrue(j.status == 'new')
|
||||
|
||||
|
||||
class JobTest(BaseJobTestMixin, django.test.TestCase):
|
||||
|
||||
def test_get_job_list(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user