Fix for rendering multiple readme files contained within a tool shed repository.

This commit is contained in:
Greg Von Kuster
2013-09-25 15:15:41 -04:00
parent d24fc0aed0
commit 150fd62935
6 changed files with 83 additions and 67 deletions
@@ -1,16 +1,17 @@
import logging
from galaxy.web.framework.helpers import time_ago
from galaxy import eggs
from galaxy import web
from galaxy import util
from galaxy.web.base.controller import BaseAPIController
import tool_shed.util.shed_util_common as suc
from tool_shed.galaxy_install import repository_util
from galaxy import eggs
import pkg_resources
eggs.require( 'mercurial' )
pkg_resources.require( 'mercurial' )
from mercurial import hg, ui, commands
from mercurial import commands
from mercurial import hg
from mercurial import ui
log = logging.getLogger( __name__ )
+10 -6
View File
@@ -1,15 +1,19 @@
import os, logging
from galaxy.web.framework.helpers import time_ago, grids
import logging
import os
from galaxy.web.framework.helpers import grids
from galaxy.web.framework.helpers import time_ago
from galaxy.webapps.tool_shed import model
from galaxy.model.orm import and_
import tool_shed.util.shed_util_common as suc
from tool_shed.grids.repository_grids import RepositoryGrid, CategoryGrid
from tool_shed.grids.repository_grids import CategoryGrid
from tool_shed.grids.repository_grids import RepositoryGrid
from galaxy import eggs
import pkg_resources
eggs.require( 'mercurial' )
pkg_resources.require( 'mercurial' )
from mercurial import hg, ui, commands
from mercurial import commands
from mercurial import hg
from mercurial import ui
log = logging.getLogger( __name__ )
+5 -9
View File
@@ -573,27 +573,23 @@ def build_invalid_tools_folder( trans, folder_id, invalid_tool_configs, changese
def build_readme_files_folder( trans, folder_id, readme_files_dict, label='Readme files' ):
"""Return a folder hierarchy containing readme text files."""
if readme_files_dict:
multiple_readme_files = len( readme_files_dict ) > 1
readme_id = 0
folder_id += 1
readme_files_root_folder = Folder( id=folder_id, key='root', label='root', parent=None )
if multiple_readme_files:
folder_id += 1
readme_files_folder = Folder( id=folder_id, key='readme_files', label=label, parent=readme_files_root_folder )
readme_files_root_folder.folders.append( readme_files_folder )
folder_id += 1
readme_files_folder = Folder( id=folder_id, key='readme_files', label=label, parent=readme_files_root_folder )
multiple_readme_files = len( readme_files_dict ) > 1
readme_files_root_folder.folders.append( readme_files_folder )
for readme_file_name, readme_file_text in readme_files_dict.items():
readme_id += 1
readme = ReadMe( id=readme_id, name=readme_file_name, text=readme_file_text )
if multiple_readme_files:
folder_id += 1
folder = Folder( id=folder_id, key=readme.name, label=readme.name, parent=readme_files_folder )
folder = Folder( id=folder_id, key=readme_file_name, label=readme_file_name, parent=readme_files_folder )
folder.readme_files.append( readme )
readme_files_folder.folders.append( folder )
else:
folder_id += 1
readme_files_folder = Folder( id=folder_id, key='readme_files', label=readme.name, parent=readme_files_root_folder )
readme_files_folder.readme_files.append( readme )
readme_files_root_folder.folders.append( readme_files_folder )
else:
readme_files_root_folder = None
return folder_id, readme_files_root_folder
+1 -11
View File
@@ -589,7 +589,7 @@ def generate_metadata_for_changeset_revision( app, repository, changeset_revisio
original_repository_metadata = repository.metadata
else:
original_repository_metadata = None
readme_file_names = get_readme_file_names( repository.name )
readme_file_names = readme_util.get_readme_file_names( str( repository.name ) )
if app.name == 'galaxy':
# Shed related tool panel configs are only relevant to Galaxy.
metadata_dict = { 'shed_config_filename' : shed_config_dict.get( 'config_filename' ) }
@@ -1046,16 +1046,6 @@ def get_parent_id( trans, id, old_id, version, guid, changeset_revisions ):
# The tool did not change through all of the changeset revisions.
return old_id
def get_readme_file_names( repository_name ):
"""Creates a list of valid filenames."""
readme_files = [ 'readme', 'read_me', 'install' ]
valid_filenames = map( lambda f: '%s.txt' % f, readme_files )
valid_filenames.extend( map( lambda f: '%s.rst' % f, readme_files ) )
valid_filenames.extend( readme_files )
valid_filenames.append( '%s.txt' % repository_name )
valid_filenames.append( '%s.rst' % repository_name )
return valid_filenames
def get_relative_path_to_repository_file( root, name, relative_install_dir, work_dir, shed_config_dict, resetting_all_metadata_on_repository ):
if resetting_all_metadata_on_repository:
full_path_to_file = os.path.join( root, name )
+10
View File
@@ -70,3 +70,13 @@ def get_readme_files_dict_for_display( trans, tool_shed_url, repo_info_dict ):
raw_text = common_util.tool_shed_get( trans.app, tool_shed_url, url )
readme_files_dict = json.from_json_string( raw_text )
return readme_files_dict
def get_readme_file_names( repository_name ):
"""Return a list of file names that will be categorized as README files for the received repository_name."""
readme_files = [ 'readme', 'read_me', 'install' ]
valid_filenames = map( lambda f: '%s.txt' % f, readme_files )
valid_filenames.extend( map( lambda f: '%s.rst' % f, readme_files ) )
valid_filenames.extend( readme_files )
valid_filenames.append( '%s.txt' % repository_name )
valid_filenames.append( '%s.rst' % repository_name )
return valid_filenames
@@ -425,7 +425,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rd-${encoded_id}">
<${cell_type} style="padding-left: ${pad+20}px;">${datatype.extension | h}</${cell_type}>
<${cell_type}>${datatype.type | h}</${cell_type}>
<${cell_type}>${datatype.mimetype | h}</${cell_type}>
@@ -446,7 +446,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rft-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="failed_test_table" class="tool_test_results">
<tr><td bgcolor="#FFFFCC"><b>Tool id:</b> ${failed_test.tool_id | h}</td></tr>
@@ -475,7 +475,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-ridm-${encoded_id}">
<${cell_type} style="padding-left: ${pad+20}px;">${data_manager.index | h}</${cell_type}>
<${cell_type}>${data_manager.error | h}</${cell_type}>
</tr>
@@ -493,7 +493,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rird-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
${ invalid_repository_dependency.error | h }
</td>
@@ -510,7 +510,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rit-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
%if trans.webapp.name == 'tool_shed' and invalid_tool.repository_id and invalid_tool.tool_config and invalid_tool.changeset_revision:
<a class="view-info" href="${h.url_for( controller='repository', action='load_invalid_tool', repository_id=trans.security.encode_id( invalid_tool.repository_id ), tool_config=invalid_tool.tool_config, changeset_revision=invalid_tool.changeset_revision, render_repository_actions_for=render_repository_actions_for )}">
@@ -545,7 +545,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-ritd-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="invalid_td_table">
<tr><td>${ invalid_tool_dependency.error | h }</td></tr>
@@ -564,7 +564,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rmtc-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="missing_table" class="tool_test_results">
<tr><td bgcolor="#FFFFCC"><b>Tool id:</b> ${missing_test_component.tool_id | h}</td></tr>
@@ -587,27 +587,17 @@
encoded_id = trans.security.encode_id( readme.id )
render_rst = readme.name.endswith( '.rst' )
%>
<style type="text/css">
#readme_table{ table-layout:fixed;
width:100%;
overflow-wrap:normal;
overflow:hidden;
border:0px;
word-break:keep-all;
word-wrap:break-word;
line-break:strict; }
</style>
<tr class="datasetRow"
%if parent is not None:
parent="${parent}"
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rr-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="readme_table">
<table id="readme_files">
%if render_rst:
<tr><td>${ rst_to_html( readme.text ) }</td></tr>
%else:
<tr><td>${readme.name}<br/>${ to_html_string( readme.text ) }</td></tr>
<tr><td>${ to_html_string( readme.text ) }</td></tr>
%endif
</table>
</td>
@@ -652,7 +642,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rrd-${encoded_id}">
%if trans.webapp.name == 'galaxy':
<${cell_type} style="padding-left: ${pad+20}px;">
%if row_is_header:
@@ -684,6 +674,19 @@
%>
</%def>
<%def name="render_readme_files_css()">
<style type="text/css">
table.readme_files{ table-layout:fixed;
width:100%;
overflow-wrap:normal;
overflow:hidden;
border:0px;
word-break:keep-all;
word-wrap:break-word;
line-break:strict; }
</style>
</%def>
<%def name="render_tool_test_results_css()">
<style type="text/css">
table.tool_test_results{ table-layout:fixed;
@@ -703,7 +706,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rtdie-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="td_install_error_table" class="tool_test_results">
<tr bgcolor="#FFFFCC">
@@ -731,7 +734,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rrie-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="rd_install_error_table" class="tool_test_results">
%if not is_current_repository:
@@ -762,7 +765,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rnt-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="not_tested_table" class="tool_test_results">
<tr><td>${not_tested.reason | h}</td></tr>
@@ -781,7 +784,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rpt-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table id="passed_tests_table" class="tool_test_results">
<tr><td bgcolor="#FFFFCC"><b>Tool id:</b> ${passed_test.tool_id | h}</td></tr>
@@ -808,7 +811,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rt-${encoded_id}">
%if row_is_header:
<th style="padding-left: ${pad+20}px;">${tool.name | h}</th>
%else:
@@ -857,7 +860,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rtd-${encoded_id}">
<${cell_type} style="padding-left: ${pad+20}px;">
%if row_is_header:
${tool_dependency.name | h}
@@ -913,13 +916,23 @@
<%def name="render_test_environment( test_environment, pad, parent, row_counter, row_is_header=False )">
<% encoded_id = trans.security.encode_id( test_environment.id ) %>
<style type="text/css">
#test_environment_table{ table-layout:fixed;
width:100%;
overflow-wrap:normal;
overflow:hidden;
border:0px;
word-break:keep-all;
word-wrap:break-word;
line-break:strict; }
</style>
<tr class="datasetRow"
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rte-${encoded_id}">
<td style="padding-left: ${pad+20}px;">
<table class="grid" id="readme_table">
<table class="grid" id="test_environment_table">
<tr><td><b>Time tested:</b> ${test_environment.time_last_tested | h}</td></tr>
<tr><td><b>System:</b> ${test_environment.system | h}</td></tr>
<tr><td><b>Architecture:</b> ${test_environment.architecture | h}</td></tr>
@@ -950,7 +963,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rvdm-${encoded_id}">
<${cell_type} style="padding-left: ${pad+20}px;">${data_manager.name | h}</${cell_type}>
<${cell_type}>${data_manager.version | h}</${cell_type}>
<${cell_type}>${data_manager.data_tables | h}</${cell_type}>
@@ -981,7 +994,7 @@
%if parent is not None:
parent="${parent}"
%endif
id="libraryItem-${encoded_id}">
id="libraryItem-rw-${encoded_id}">
<${cell_type} style="padding-left: ${pad+20}px;">
%if row_is_header:
${workflow.workflow_name | h}
@@ -1045,6 +1058,8 @@
return str( self.count )
%>
%if readme_files_root_folder:
${render_readme_files_css()}
<p/>
<div class="toolForm">
<div class="toolFormTitle">Repository README files - may contain important installation or license information</div>
<div class="toolFormBody">
@@ -1161,11 +1176,11 @@
<div class="toolForm">
<div class="toolFormTitle">Automated tool test results</div>
<div class="toolFormBody">
<p/>
<% row_counter = RowCounter() %>
<table cellspacing="2" cellpadding="2" border="0" width="100%" class="tables container-table" id="test_environment">
${render_folder( tool_test_results_root_folder, 0, parent=None, row_counter=row_counter, is_root_folder=True )}
</table>
<p/>
<% row_counter = RowCounter() %>
<table cellspacing="2" cellpadding="2" border="0" width="100%" class="tables container-table" id="test_environment">
${render_folder( tool_test_results_root_folder, 0, parent=None, row_counter=row_counter, is_root_folder=True )}
</table>
</div>
</div>
%endif