If installing a single tool shed repository that contains a readme file, display its contents on the tool panel section selection page.

This commit is contained in:
Greg Von Kuster
2012-04-02 11:25:46 -04:00
parent 30bc6da50a
commit c8f2fda197
4 changed files with 47 additions and 0 deletions
@@ -367,6 +367,22 @@ class AdminToolshed( AdminGalaxy ):
shed_tool_conf = shed_tool_conf.replace( './', '', 1 )
shed_tool_conf_select_field = None
tool_panel_section_select_field = build_tool_panel_section_select_field( trans )
if includes_tools:
# If we're installing a single repository that contains a readme file, get it's contents to display.
decoded_repo_info_dict = tool_shed_decode( repo_info_dict )
if len( decoded_repo_info_dict ) == 1:
name = decoded_repo_info_dict.keys()[ 0 ]
repo_info_tuple = decoded_repo_info_dict[ name ]
description, repository_clone_url, changeset_revision = repo_info_tuple
owner = get_repository_owner( clean_repository_clone_url( repository_clone_url ) )
url = '%s/repository/get_readme?name=%s&owner=%s&changeset_revision=%s&webapp=galaxy' % ( tool_shed_url, name, owner, changeset_revision )
response = urllib2.urlopen( url )
readme_text = response.read()
response.close()
else:
readme_text = ''
else:
readme_text = ''
return trans.fill_template( '/admin/tool_shed_repository/select_tool_panel_section.mako',
tool_shed_url=tool_shed_url,
repo_info_dict=repo_info_dict,
@@ -375,6 +391,7 @@ class AdminToolshed( AdminGalaxy ):
shed_tool_conf_select_field=shed_tool_conf_select_field,
tool_panel_section_select_field=tool_panel_section_select_field,
new_tool_panel_section=new_tool_panel_section,
readme_text=readme_text,
message=message,
status=status )
@web.expose
+1
View File
@@ -86,6 +86,7 @@ class Configuration( object ):
self.cloud_controller_instance = False
self.server_name = ''
self.job_manager = ''
self.default_job_handlers = []
self.job_handlers = []
self.tool_handlers = []
self.tool_runners = []
@@ -773,6 +773,25 @@ class RepositoryController( BaseUIController, ItemRatings ):
( galaxy_url, url_for( '/', qualified=True ), encoded_repo_info_dict, str( includes_tools ) )
return trans.response.send_redirect( url )
@web.expose
def get_readme( self, trans, **kwd ):
"""
If the received changeset_revision includes a file named readme (case ignored), return it's contents.
"""
name = kwd[ 'name' ]
owner = kwd[ 'owner' ]
changeset_revision = kwd[ 'changeset_revision' ]
repository = get_repository_by_name_and_owner( trans, name, owner )
repo_dir = repository.repo_path
repo = hg.repository( get_configured_ui(), repo_dir )
for root, dirs, files in os.walk( repo_dir ):
for name in files:
if name.lower() in [ 'readme', 'read_me' ]:
f = open( os.path.join( root, name ), 'r' )
text = f.read()
f.close()
return str( text )
return ''
@web.expose
def get_tool_versions( self, trans, **kwd ):
"""
For each valid /downloadable change set (up to the received changeset_revision) in the
@@ -62,3 +62,13 @@
</form>
</div>
</div>
%if readme_text:
<div class="toolForm">
<div class="toolFormTitle">Repository README file (may contain important installation or license information)</div>
<div class="toolFormBody">
<div class="form-row">
<pre>${readme_text}</pre>
</div>
</div>
</div>
%endif