Improve handling of invalid/expired GenomeSpace tokens in GenomeSpace export tool.

This commit is contained in:
Daniel Blankenberg
2014-04-09 17:24:56 -04:00
parent 86da018f62
commit 4d88ce03de
2 changed files with 21 additions and 16 deletions
+15 -14
View File
@@ -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 <strong>expired</strong>, please <a href="%s">reauthenticate</a>.' % ( urljoin( base_url, 'user/openid_auth?openid_provider=genomespace&amp;auto_associate=True' ) ), 'value': '', 'options':[], 'selected': False } ]
return rval
+6 -2
View File
@@ -35,14 +35,18 @@
<inputs>
<param format="data" name="input1" type="data" label="Send this dataset to GenomeSpace" />
<param name="base_url" type="baseurl" />
<param name="subdirectory" type="drill_down" display="radio" hierarchy="exact" multiple="False" optional="True" label="Choose Target Directory" dynamic_options="galaxy_code_get_genomespace_folders( genomespace_site = 'prod', trans=__trans__, value=__value__, input_dataset=input1 )" help="Leave blank to generate automatically"/>
<param name="subdirectory" type="drill_down" display="radio" hierarchy="exact" multiple="False" optional="True" label="Choose Target Directory" dynamic_options="galaxy_code_get_genomespace_folders( genomespace_site = 'prod', trans=__trans__, value=__value__, input_dataset=input1, base_url=base_url )" help="Leave blank to generate automatically"/>
<param name="filename" type="text" size="80" help="Leave blank to generate automatically" />
</inputs>
<outputs>
<data format="html" name="output_log" />
</outputs>
<help>
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&amp;auto_associate=True
</help>
<options refresh="True"/>
<code file="genomespace_exporter.py" />