From 4a992e531aa165c37d59eca3bdb3f58b2cf0e145 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Sat, 19 Nov 2016 11:33:26 -0500 Subject: [PATCH] copy organization when copying a WFJT --- awx/main/models/mixins.py | 4 ---- awx/main/models/unified_jobs.py | 4 ++++ awx/main/models/workflow.py | 8 +++++++- awx/main/tests/functional/models/test_workflow.py | 7 +++++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/awx/main/models/mixins.py b/awx/main/models/mixins.py index c09488f7db..887d139573 100644 --- a/awx/main/models/mixins.py +++ b/awx/main/models/mixins.py @@ -79,10 +79,6 @@ class SurveyJobTemplateMixin(models.Model): default={}, ) - @classmethod - def _get_unified_jt_copy_names(cls): - return cls._get_unified_job_field_names() + ['survey_spec', 'survey_enabled'] - def survey_password_variables(self): vars = [] if self.survey_enabled and 'spec' in self.survey_spec: diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 8dcb796513..26f62bb0ba 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -357,6 +357,10 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, Notificatio dest_field.add(*list(src_field_value.all().values_list('id', flat=True))) return unified_job + @classmethod + def _get_unified_jt_copy_names(cls): + return cls._get_unified_job_field_names() + def copy_unified_jt(self): ''' Create a copy of this unified job template. diff --git a/awx/main/models/workflow.py b/awx/main/models/workflow.py index dcd1fd305b..2a7d800e80 100644 --- a/awx/main/models/workflow.py +++ b/awx/main/models/workflow.py @@ -362,7 +362,13 @@ class WorkflowJobTemplate(UnifiedJobTemplate, WorkflowJobOptions, SurveyJobTempl @classmethod def _get_unified_job_field_names(cls): - return ['name', 'description', 'extra_vars', 'labels', 'survey_passwords', 'schedule', 'launch_type'] + return ['name', 'description', 'extra_vars', 'labels', 'survey_passwords', + 'schedule', 'launch_type'] + + @classmethod + def _get_unified_jt_copy_names(cls): + return (super(WorkflowJobTemplate, cls)._get_unified_jt_copy_names() + + ['survey_spec', 'survey_enabled', 'organization']) def get_absolute_url(self): return reverse('api:workflow_job_template_detail', args=(self.pk,)) diff --git a/awx/main/tests/functional/models/test_workflow.py b/awx/main/tests/functional/models/test_workflow.py index aec7e1f07d..0cb278826f 100644 --- a/awx/main/tests/functional/models/test_workflow.py +++ b/awx/main/tests/functional/models/test_workflow.py @@ -99,8 +99,10 @@ class TestWorkflowJob: @pytest.mark.django_db class TestWorkflowJobTemplate: @pytest.fixture - def wfjt(self, workflow_job_template_factory): - wfjt = workflow_job_template_factory('test').workflow_job_template + def wfjt(self, workflow_job_template_factory, organization): + wfjt = workflow_job_template_factory( + 'test', organization=organization).workflow_job_template + wfjt.organization = organization nodes = [WorkflowJobTemplateNode.objects.create(workflow_job_template=wfjt) for i in range(0, 3)] nodes[0].success_nodes.add(nodes[1]) nodes[1].failure_nodes.add(nodes[2]) @@ -145,6 +147,7 @@ class TestWorkflowJobTemplate: new_wfjt = wfjt.user_copy(admin_user) for fd in ['description', 'survey_spec', 'survey_enabled', 'extra_vars']: assert getattr(wfjt, fd) == getattr(new_wfjt, fd) + assert new_wfjt.organization == wfjt.organization assert len(new_wfjt.workflow_job_template_nodes.all()) == 3 nodes = new_wfjt.workflow_job_template_nodes.all() assert nodes[0].success_nodes.all()[0] == nodes[1]