def get_form(self, form_class): stage_configurations = self.stage.get_queryset_configurations() form = form_class(**self.get_form_kwargs()) used_arg_names = [] # We want to inject fields into the form for the configurations they've marked as prompt for config in stage_configurations: if config.task_argument and config.task_name != self.task_name: continue if not config.prompt_me_for_input: if config.task_argument: used_arg_names.append(config.key) continue str_config_key = 'configuration_value_for_{}'.format(config.key) if config.data_type == config.BOOLEAN_TYPE: field = BooleanField(widget=Select(choices=((False, 'False'), (True, 'True')))) field.coerce=lambda x: x == 'True', elif config.data_type == config.NUMBER_TYPE: field = FloatField() else: field = CharField() if config.sensitive_value: field.widget = PasswordInput() if config.task_argument: used_arg_names.append(config.key) field.label = 'Argument value for ' + config.key field.initial = config.value form.fields[str_config_key] = field form.helper.layout.fields.insert(len(form.helper.layout.fields)-1, str_config_key) task_details = backend.get_task_details(self.stage.project, self.task_name) for arg in task_details[2]: if isinstance(arg, tuple): name, default = arg else: name, default = arg, None if name in used_arg_names: continue str_config_key = 'configuration_value_for_{}'.format(name) field = CharField(label='Argument value for ' + name, initial=default) form.fields[str_config_key] = field form.helper.layout.fields.insert(len(form.helper.layout.fields)-1, str_config_key) return form
def dispatch(self, request, *args, **kwargs): self.project = get_object_or_404(models.Project, id=kwargs['project_id']) self.stage = get_object_or_404(models.Stage, id=self.kwargs['stage_id'], project=self.project) task_name = request.GET.get('task', None) task_details = backend.get_task_details(self.project, task_name) if task_details is None: messages.error(self.request, '"{}" is not a valid task.'. format(task_name)) return HttpResponseRedirect( reverse('projects_stage_view', kwargs={'project_id': self.stage.project_id, 'pk': self.stage.pk}) ) self.task_name = task_details[0] self.task_description = task_details[1] return super(DeploymentCreate, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.project = get_object_or_404(models.Project, id=kwargs['project_id']) self.stage = get_object_or_404(models.Stage, id=self.kwargs['stage_id'], project=self.project) task_name = request.GET.get('task', None) task_details = backend.get_task_details(self.project, task_name) if task_details is None: messages.error(self.request, '"{}" is not a valid task.'.format(task_name)) return HttpResponseRedirect( reverse('projects_stage_view', kwargs={ 'project_id': self.stage.project_id, 'pk': self.stage.pk })) self.task_name = task_details[0] self.task_description = task_details[1] return super(DeploymentCreate, self).dispatch(request, *args, **kwargs)
def get_form(self, form_class): stage_configurations = self.stage.get_queryset_configurations() form = form_class(**self.get_form_kwargs()) used_arg_names = [] # We want to inject fields into the form for the configurations they've marked as prompt for config in stage_configurations: if config.task_argument and config.task_name != self.task_name: continue if not config.prompt_me_for_input: if config.task_argument: used_arg_names.append(config.key) continue str_config_key = 'configuration_value_for_{}'.format(config.key) if config.data_type == config.BOOLEAN_TYPE: field = BooleanField(widget=Select(choices=((False, 'False'), (True, 'True'))), required=False) field.coerce = lambda x: x == 'True', elif config.data_type == config.NUMBER_TYPE: field = FloatField() else: field = CharField() if config.sensitive_value: field.widget = PasswordInput() if config.task_argument: used_arg_names.append(config.key) field.label = 'Argument value for ' + config.key field.initial = config.value form.fields[str_config_key] = field form.helper.layout.fields.insert( len(form.helper.layout.fields) - 1, str_config_key) task_details = backend.get_task_details(self.stage.project, self.task_name) for arg in task_details[2]: if isinstance(arg, tuple): name, default = arg else: name, default = arg, None if name in used_arg_names: continue str_config_key = 'configuration_value_for_{}'.format(name) field = CharField(label='Argument value for ' + name, initial=default) form.fields[str_config_key] = field form.helper.layout.fields.insert( len(form.helper.layout.fields) - 1, str_config_key) return form