From 8ff671bfd6c7ad7362eb0287c4e72546f23f2ad8 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 19 Oct 2016 10:11:04 -0400 Subject: [PATCH] finish editing the WFJT launch validate method --- awx/api/serializers.py | 15 ++++++++------- awx/api/views.py | 7 ++++--- .../tests/unit/models/test_survey_models.py | 18 +++++++++++++++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 205d66aa7f..d04bf0e348 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -2609,19 +2609,20 @@ class JobLaunchSerializer(BaseSerializer): class WorkflowJobLaunchSerializer(BaseSerializer): - can_start_without_user_input = serializers.BooleanField(read_only=True) - variables_needed_to_start = serializers.ReadOnlyField() - + # can_start_without_user_input = serializers.BooleanField(read_only=True) + # variables_needed_to_start = serializers.ReadOnlyField() + survey_enabled = serializers.SerializerMethodField() extra_vars = VerbatimField(required=False, write_only=True) - workflow_job_template_data = serializers.SerializerMethodField() + # workflow_job_template_data = serializers.SerializerMethodField() + # warnings = class Meta: model = WorkflowJobTemplate - fields = ('can_start_without_user_input', + fields = ('*',#'can_start_without_user_input', 'extra_vars', - 'survey_enabled', 'variables_needed_to_start', - 'workflow_job_template_data') + 'survey_enabled')#, 'variables_needed_to_start', + # 'workflow_job_template_data') def get_survey_enabled(self, obj): if obj: diff --git a/awx/api/views.py b/awx/api/views.py index 972204a98b..6d1ddbe57b 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -2786,12 +2786,13 @@ class WorkflowJobTemplateLabelList(JobTemplateLabelList): new_in_310 = True -# TODO: -class WorkflowJobTemplateLaunch(GenericAPIView): +class WorkflowJobTemplateLaunch(RetrieveAPIView): model = WorkflowJobTemplate serializer_class = WorkflowJobLaunchSerializer new_in_310 = True + is_job_start = True + always_allow_superuser = False def update_raw_data(self, data): obj = self.get_object() @@ -2802,7 +2803,7 @@ class WorkflowJobTemplateLaunch(GenericAPIView): if extra_vars: data['extra_vars'] = extra_vars return data - + # def get(self, request, *args, **kwargs): # data = {} # obj = self.get_object() diff --git a/awx/main/tests/unit/models/test_survey_models.py b/awx/main/tests/unit/models/test_survey_models.py index ff55d7103b..e197e9339a 100644 --- a/awx/main/tests/unit/models/test_survey_models.py +++ b/awx/main/tests/unit/models/test_survey_models.py @@ -2,7 +2,11 @@ import pytest import json from awx.main.tasks import RunJob -from awx.main.models import Job +from awx.main.models import ( + Job, + WorkflowJob, + WorkflowJobTemplate +) @pytest.fixture @@ -65,3 +69,15 @@ def test_job_args_unredacted_passwords(job): ev_index = args.index('-e') + 1 extra_vars = json.loads(args[ev_index]) assert extra_vars['secret_key'] == 'my_password' + +class TestWorkflowSurveys: + def test_update_kwargs_survey_defaults(self, survey_spec_factory): + "Assure that the survey default over-rides a JT variable" + spec = survey_spec_factory('var1') + spec['spec'][0]['default'] = 3 + wfjt = WorkflowJobTemplate( + name="test-wfjt", + survey_spec=spec, + extra_vars="var1: 5" + ) + assert json.loads(wfjt._update_unified_job_kwargs()['extra_vars'])['var1'] == 3