From 4d88ce03deaf237f9ec63481436a406a7de51fa8 Mon Sep 17 00:00:00 2001 From: Daniel Blankenberg Date: Wed, 9 Apr 2014 17:24:56 -0400 Subject: [PATCH] Improve handling of invalid/expired GenomeSpace tokens in GenomeSpace export tool. --- tools/genomespace/genomespace_exporter.py | 29 +++++++++++----------- tools/genomespace/genomespace_exporter.xml | 8 ++++-- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/tools/genomespace/genomespace_exporter.py b/tools/genomespace/genomespace_exporter.py index b35ae9f2a33..ef92c0676c6 100644 --- a/tools/genomespace/genomespace_exporter.py +++ b/tools/genomespace/genomespace_exporter.py @@ -11,6 +11,7 @@ import optparse import os import urllib import urllib2 +from urlparse import urljoin log = logging.getLogger( "tools.genomespace.genomespace_exporter" )#( __name__ ) @@ -117,7 +118,7 @@ def get_genome_space_launch_apps( atm_url, url_opener, file_url, file_type ): break return webtools -def galaxy_code_get_genomespace_folders( genomespace_site='prod', trans=None, value=None, **kwd ): +def galaxy_code_get_genomespace_folders( genomespace_site='prod', trans=None, value=None, base_url=None, **kwd ): if value: value = value[0]#single select, only 1 value def recurse_directory_dict( url_opener, cur_options, url ): @@ -142,19 +143,19 @@ def galaxy_code_get_genomespace_folders( genomespace_site='prod', trans=None, va if trans and trans.user: username = trans.user.preferences.get( 'genomespace_username', None ) token = trans.user.preferences.get( 'genomespace_token', None ) - if None in ( username, token ): - return [] - url_opener = get_cookie_opener( username, token ) - genomespace_site_dict = get_genomespace_site_urls()[ genomespace_site ] - dm_url = genomespace_site_dict['dmServer'] - #get export root directory - #directory_dict = get_default_directory( url_opener, dm_url ).get( 'directory', None ) #This directory contains shares and other items outside of the users home - directory_dict = get_personal_directory( url_opener, dm_url ).get( 'directory', None ) #Limit export list to only user's home dir - if directory_dict is None: - return [] - #what directory to stuff this in - recurse_directory_dict( url_opener, rval, directory_dict.get( 'url' ) ) - + if None not in ( username, token ): + url_opener = get_cookie_opener( username, token ) + genomespace_site_dict = get_genomespace_site_urls()[ genomespace_site ] + dm_url = genomespace_site_dict['dmServer'] + #get export root directory + #directory_dict = get_default_directory( url_opener, dm_url ).get( 'directory', None ) #This directory contains shares and other items outside of the users home + directory_dict = get_personal_directory( url_opener, dm_url ).get( 'directory', None ) #Limit export list to only user's home dir + if directory_dict is not None: + recurse_directory_dict( url_opener, rval, directory_dict.get( 'url' ) ) + if not rval: + if not base_url: + base_url = '..' + rval = [ { 'name':'Your GenomeSpace token appears to be expired, please reauthenticate.' % ( urljoin( base_url, 'user/openid_auth?openid_provider=genomespace&auto_associate=True' ) ), 'value': '', 'options':[], 'selected': False } ] return rval diff --git a/tools/genomespace/genomespace_exporter.xml b/tools/genomespace/genomespace_exporter.xml index 508e856986e..344698e2baa 100644 --- a/tools/genomespace/genomespace_exporter.xml +++ b/tools/genomespace/genomespace_exporter.xml @@ -35,14 +35,18 @@ - + - This Tool allows you to export data to GenomeSpace. You must have logged in using your GenomeSpace OpenID. You can associate your OpenID credentials under the User Preferences panel. +This Tool allows you to export data to GenomeSpace. You must have logged in using your GenomeSpace OpenID. You can associate your OpenID credentials under the User Preferences panel. + +If you are having trouble with this tool, click here_ to refresh your GenomeSpace token before reporting errors. + +.. _here: ${static_path}/../user/openid_auth?openid_provider=genomespace&auto_associate=True