diff --git a/lib/galaxy/web/controllers/requests_admin.py b/lib/galaxy/web/controllers/requests_admin.py index 40d352262fe..37a86c0a00a 100644 --- a/lib/galaxy/web/controllers/requests_admin.py +++ b/lib/galaxy/web/controllers/requests_admin.py @@ -493,6 +493,7 @@ class RequestsAdmin( BaseUIController, UsesFormDefinitions ): return trans.response.send_redirect( web.url_for( controller='requests_admin', action='select_datasets_to_transfer', request_id=trans.security.encode_id( request.id ), + external_service_id=trans.security.encode_id( external_service.id ), status=status, message=message ) ) def __create_sample_datasets( self, trans, sample, selected_datasets_to_transfer, external_service ): diff --git a/lib/galaxy/web/controllers/requests_common.py b/lib/galaxy/web/controllers/requests_common.py index 5e989154baf..88bbc3320f8 100644 --- a/lib/galaxy/web/controllers/requests_common.py +++ b/lib/galaxy/web/controllers/requests_common.py @@ -1011,6 +1011,8 @@ class RequestsCommon( BaseUIController, UsesFormDefinitions ): sample = trans.sa_session.query( trans.model.Sample ).get( trans.security.decode_id( sample_id ) ) except: return invalid_id_redirect( trans, cntrller, sample_id, 'sample' ) + external_service_id = params.get( 'external_service_id', None ) + external_service = trans.sa_session.query( trans.model.ExternalService ).get( trans.security.decode_id( external_service_id ) ) # See if a library and folder have been set for this sample. if is_admin and not sample.library or not sample.folder: status = 'error' @@ -1043,6 +1045,7 @@ class RequestsCommon( BaseUIController, UsesFormDefinitions ): return trans.fill_template( '/requests/common/view_sample_datasets.mako', cntrller=cntrller, title=title, + external_service=external_service, sample=sample, sample_datasets=sample_datasets, transfer_status=transfer_status, diff --git a/templates/requests/common/common.mako b/templates/requests/common/common.mako index dc461be8517..8e79e7ca1a9 100644 --- a/templates/requests/common/common.mako +++ b/templates/requests/common/common.mako @@ -298,9 +298,14 @@ ## This link will direct the admin to a page allowing them to manage datasets. ${len( sample.datasets )} %elif sample.datasets: + <% + # Get an external_service from one of the sample datasets. This assumes all sample datasets are associated with + # the same external service - hopefully this is a good assumption. + external_service = sample.datasets[0].external_service + %> ## Since this is a regular user, only display a link if there is at least 1 ## selected dataset for the sample. - ${len( sample.datasets )} + ${len( sample.datasets )} %else: ## Since this is a regular user, do not display a link if there are no datasets. ${len( sample.datasets )} @@ -424,8 +429,13 @@ %endif %if sample.datasets and len( sample.datasets ) > len( transferred_dataset_files ) and sample.library and sample.folder:
  • Manage selected datasets
  • - %elif sample.datasets and len(sample.datasets ) == len( transferred_dataset_files ): -
  • View transferred datasets
  • + %elif sample.datasets and len( sample.datasets ) == len( transferred_dataset_files ): + <% + # Get an external_service from one of the sample datasets. This assumes all sample datasets are associated with + # the same external service - hopefully this is a good assumption. + external_service = sample.datasets[0].external_service + %> +
  • View transferred datasets
  • %endif %else: @@ -483,6 +493,11 @@ ## This link will direct the admin to a page allowing them to manage datasets. ${len( sample.datasets )} %elif sample.library and sample.datasets: + <% + # Get an external_service from one of the sample datasets. This assumes all sample datasets are associated with + # the same external service - hopefully this is a good assumption. + external_service = sample.datasets[0].external_service + %> ## Since this is a regular user, only display a link if there is at least 1 ## selected dataset for the sample. ${len( sample.datasets )} diff --git a/templates/requests/common/find_samples.mako b/templates/requests/common/find_samples.mako index 79ec8d96788..29512adef24 100644 --- a/templates/requests/common/find_samples.mako +++ b/templates/requests/common/find_samples.mako @@ -78,7 +78,12 @@ %else: State: ${sample.state.name}
    %endif - Datasets: ${len( sample.datasets )}
    + <% + # Get an external_service from one of the sample datasets. This assumes all sample datasets are associated with + # the same external service - hopefully this is a good assumption. + external_service = sample.datasets[0].external_service + %> + Datasets: ${len( sample.datasets )}
    %if is_admin: User: ${sample.request.user.email} %endif diff --git a/templates/requests/common/view_sample_datasets.mako b/templates/requests/common/view_sample_datasets.mako index 5aad1eefb63..986c88d78a9 100644 --- a/templates/requests/common/view_sample_datasets.mako +++ b/templates/requests/common/view_sample_datasets.mako @@ -25,7 +25,7 @@
  • Dataset Actions
  • %if can_select_datasets: -
  • Select more datasets
  • +
  • Select more datasets
  • %endif
  • View target Data Library
  • Browse this request
  • diff --git a/test/base/twilltestcase.py b/test/base/twilltestcase.py index 639af36d2c6..11571989ce0 100644 --- a/test/base/twilltestcase.py +++ b/test/base/twilltestcase.py @@ -13,6 +13,7 @@ from markupsafe import escape from elementtree import ElementTree from galaxy.web import security from galaxy.web.framework.helpers import iff +from galaxy.util.json import from_json_string from base.asserts import verify_assertions buffer = StringIO.StringIO() @@ -34,7 +35,14 @@ class TwillTestCase( unittest.TestCase ): self.host = os.environ.get( 'GALAXY_TEST_HOST' ) self.port = os.environ.get( 'GALAXY_TEST_PORT' ) self.url = "http://%s:%s" % ( self.host, self.port ) - self.file_dir = os.environ.get( 'GALAXY_TEST_FILE_DIR' ) + self.file_dir = os.environ.get( 'GALAXY_TEST_FILE_DIR', None ) + self.migrated_tools_file = os.environ.get( 'GALAXY_MIGRATED_TOOLS_FILE', None ) + if self.migrated_tools_file: + f = open( self.migrated_tools_file, 'r' ) + self.migrated_tools_dict = from_json_string( f.readlines() ) + f.close() + else: + self.migrated_tools_dict = {} self.keepOutdir = os.environ.get( 'GALAXY_TEST_SAVE', '' ) if self.keepOutdir > '': try: @@ -1792,9 +1800,10 @@ class TwillTestCase( unittest.TestCase ): tc.submit( "save_samples_button" ) for check_str in strings_displayed_after_submit: self.check_page_for_string( check_str ) - def add_datasets_to_sample( self, request_id, sample_id, sample_datasets, strings_displayed=[], strings_displayed_after_submit=[] ): + def add_datasets_to_sample( self, request_id, sample_id, external_service_id, sample_datasets, strings_displayed=[], strings_displayed_after_submit=[] ): # visit the dataset selection page - url = "%s/requests_admin/select_datasets_to_transfer?cntrller=requests_admin&sample_id=%s&request_id=%s" % ( self.url, sample_id, request_id ) + url = "%s/requests_admin/select_datasets_to_transfer?cntrller=requests_admin&sample_id=%s&request_id=%s&external_service_id=%s" % \ + ( self.url, sample_id, request_id, external_service_id ) self.visit_url( url ) for check_str in strings_displayed: self.check_page_for_string( check_str ) diff --git a/test/functional/test_sample_tracking.py b/test/functional/test_sample_tracking.py index f6f158eb956..57e5618c1a6 100644 --- a/test/functional/test_sample_tracking.py +++ b/test/functional/test_sample_tracking.py @@ -800,11 +800,13 @@ class TestFormsAndSampleTracking( TwillTestCase ): sample_dataset_file_names = [ dataset.split( '/' )[-1] for dataset in sample_datasets ] global request1_sample1 request1_sample1 = request1.get_sample( 'Sample1_renamed' ) + external_service = request1_sample1.external_service strings_displayed_after_submit = [ 'Datasets (%s) have been selected for sample (%s)' % \ ( str( sample_dataset_file_names )[1:-1].replace( "'", "" ), request1_sample1.name ) ] strings_displayed = [ 'Select datasets to transfer from data directory configured for the sequencer' ] self.add_datasets_to_sample( request_id=self.security.encode_id( request2.id ), sample_id= self.security.encode_id( request1_sample1.id ), + external_service_id=self.security.encode_id( external_serviceexternal_service.id ), sample_datasets=sample_datasets, strings_displayed=strings_displayed, strings_displayed_after_submit=strings_displayed_after_submit )