diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 62a6074025f..666686cd72b 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -1800,6 +1800,7 @@ class ExternalService( object ): self.form_definition_id = form_definition_id self.form_values_id = form_values_id self.deleted = deleted + self.label = None # Used in the request_type controller's __build_external_service_select_field() method def get_external_service_type( self, trans ): return trans.app.external_service_types.all_external_service_types[ self.external_service_type_id ] def load_data_transfer_settings( self, trans ): diff --git a/lib/galaxy/web/controllers/external_service.py b/lib/galaxy/web/controllers/external_service.py index 25621b4d483..37eb44cef67 100644 --- a/lib/galaxy/web/controllers/external_service.py +++ b/lib/galaxy/web/controllers/external_service.py @@ -107,6 +107,7 @@ class ExternalService( BaseController, UsesFormDefinitions ): message=message, status=status ) ) elif external_service_type_id != 'none': + # Form submission via refresh_on_change trans.app.external_service_types.reload( external_service_type_id ) external_service_type = self.get_external_service_type( trans, external_service_type_id ) widgets.extend( external_service_type.form_definition.get_widgets( trans.user, **kwd ) ) @@ -181,11 +182,9 @@ class ExternalService( BaseController, UsesFormDefinitions ): external_service_type = self.get_external_service_type( trans, external_service_type_id ) external_service = trans.model.ExternalService( name, description, external_service_type_id, version ) external_service.form_definition = external_service_type.form_definition - values = {} - for index, field in enumerate( external_service_type.form_definition.fields ): - field_name = field[ 'name' ] - field_value = field[ 'default' ] - values[ field_name ] = field_value + # Get the form values from kwd, some of which may be different than the defaults in the external service + # type config because the user could have overwritten them. + values = self.get_form_values( trans, trans.user, external_service.form_definition, **kwd ) external_service.form_values = trans.model.FormValues( external_service.form_definition, values ) trans.sa_session.add( external_service ) trans.sa_session.add( external_service.form_definition ) diff --git a/lib/galaxy/web/controllers/request_type.py b/lib/galaxy/web/controllers/request_type.py index 6ede50eed51..485ce79fcef 100644 --- a/lib/galaxy/web/controllers/request_type.py +++ b/lib/galaxy/web/controllers/request_type.py @@ -448,10 +448,11 @@ class RequestType( BaseController, UsesFormDefinitions ): selected_value = 'none' all_external_services = trans.sa_session.query( trans.model.ExternalService ).filter( trans.model.ExternalService.table.c.deleted==False ).all() for e in all_external_services: - e.get_external_service_type( trans ) + external_service_type = e.get_external_service_type( trans ) + e.label = '%s - %s' % ( e.name, external_service_type.name ) return build_select_field( trans, objs=all_external_services, - label_attr='name', + label_attr='label', select_field_name=select_field_name, selected_value=selected_value, refresh_on_change=False )