Better handling of foreign key parameters for (re)launching jobs. Fixes https://trello.com/c/Ty5cjHBd

This commit is contained in:
Chris Church 2014-12-02 15:12:45 -05:00
parent 9dfa26fa58
commit 7e94282934
2 changed files with 21 additions and 9 deletions

View File

@ -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:

View File

@ -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):