mirror of
https://github.com/ansible/awx.git
synced 2026-03-22 03:17:39 -02:30
Better handling of foreign key parameters for (re)launching jobs. Fixes https://trello.com/c/Ty5cjHBd
This commit is contained in:
@@ -296,16 +296,22 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique):
|
|||||||
create_kwargs = {}
|
create_kwargs = {}
|
||||||
create_kwargs[parent_field_name] = self
|
create_kwargs[parent_field_name] = self
|
||||||
for field_name in self._get_unified_job_field_names():
|
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.
|
# 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:
|
id_field_name = '%s_id' % field_name
|
||||||
create_kwargs['%s_id' % field_name] = kwargs['%s_id' % field_name] = kwargs["%s_id" % field_name]
|
if hasattr(self, id_field_name):
|
||||||
continue
|
if field_name in kwargs:
|
||||||
if not hasattr(self, field_name):
|
value = kwargs[field_name]
|
||||||
continue
|
elif id_field_name in kwargs:
|
||||||
create_kwargs[field_name] = getattr(self, field_name)
|
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)
|
kwargs = self._update_unified_job_kwargs(**create_kwargs)
|
||||||
unified_job = unified_job_class(**create_kwargs)
|
unified_job = unified_job_class(**create_kwargs)
|
||||||
if save_unified_job:
|
if save_unified_job:
|
||||||
|
|||||||
@@ -1036,6 +1036,12 @@ class JobTemplateTest(BaseJobTestMixin, django.test.TestCase):
|
|||||||
j = Job.objects.get(pk=response['job'])
|
j = Job.objects.get(pk=response['job'])
|
||||||
self.assertTrue(j.status == 'new')
|
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):
|
class JobTest(BaseJobTestMixin, django.test.TestCase):
|
||||||
|
|
||||||
def test_get_job_list(self):
|
def test_get_job_list(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user