commit/galaxy-central: greg: Add the ability to browse the installation directory of tool dependencies for installed tool shed repositories.
1 new commit in galaxy-central: https://bitbucket.org/galaxy/galaxy-central/changeset/bef69fd3fcc1/ changeset: bef69fd3fcc1 user: greg date: 2012-06-14 16:00:51 summary: Add the ability to browse the installation directory of tool dependencies for installed tool shed repositories. affected #: 10 files diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e lib/galaxy/model/__init__.py --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -2740,7 +2740,13 @@ self.version = version self.type = type self.uninstalled = uninstalled - + def installation_directory( self, app ): + return os.path.join( app.config.tool_dependency_dir, + self.name, + self.version, + self.tool_shed_repository.owner, + self.tool_shed_repository.name, + self.installed_changeset_revision ) class ToolVersion( object ): def __init__( self, id=None, create_time=None, tool_id=None, tool_shed_repository=None ): self.id = id diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e lib/galaxy/tool_shed/tool_dependencies/install_util.py --- a/lib/galaxy/tool_shed/tool_dependencies/install_util.py +++ b/lib/galaxy/tool_shed/tool_dependencies/install_util.py @@ -41,7 +41,7 @@ sa_session.add( tool_dependency ) sa_session.flush() return tool_dependency -def get_install_dir( app, repository, installed_changeset_revision, package_name, package_version ): +def get_tool_dependency_install_dir( app, repository, installed_changeset_revision, package_name, package_version ): return os.path.abspath( os.path.join( app.config.tool_dependency_dir, package_name, package_version, diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e lib/galaxy/tools/deps/__init__.py --- a/lib/galaxy/tools/deps/__init__.py +++ b/lib/galaxy/tools/deps/__init__.py @@ -46,7 +46,7 @@ if installed_tool_dependencies: for installed_dependency in installed_tool_dependencies: if not installed_dependency.uninstalled: - if installed_dependency.name == name and installed_dependency.version == version and installed_dependency.type == type: + if installed_dependency.name==name and installed_dependency.version==version and installed_dependency.type==type: break for base_path in self.base_paths: if installed_dependency: diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e lib/galaxy/util/shed_util.py --- a/lib/galaxy/util/shed_util.py +++ b/lib/galaxy/util/shed_util.py @@ -956,6 +956,9 @@ file_name = strip_path( shed_tool_conf_dict[ 'config_filename' ] ) if shed_tool_conf == file_name: return index, shed_tool_conf_dict +def get_tool_dependency( trans, id ): + """Get a tool_dependency from the database via id""" + return trans.sa_session.query( trans.model.ToolDependency ).get( trans.security.decode_id( id ) ) def get_tool_panel_config_tool_path_install_dir( app, repository ): # Return shed-related tool panel config, the tool_path configured in it, and the relative path to the directory where the # repository is installed. This method assumes all repository tools are defined in a single shed-related tool panel config. diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e lib/galaxy/web/controllers/admin_toolshed.py --- a/lib/galaxy/web/controllers/admin_toolshed.py +++ b/lib/galaxy/web/controllers/admin_toolshed.py @@ -2,7 +2,7 @@ from galaxy.web.controllers.admin import * from galaxy.util.json import from_json_string, to_json_string from galaxy.util.shed_util import * -from galaxy.tool_shed.tool_dependencies.install_util import get_install_dir, not_installed +from galaxy.tool_shed.tool_dependencies.install_util import get_tool_dependency_install_dir, not_installed from galaxy.tool_shed.encoding_util import * from galaxy import eggs, tools @@ -148,6 +148,19 @@ return self.repository_list_grid( trans, **kwd ) @web.expose @web.require_admin + def browse_tool_dependency( self, trans, **kwd ): + params = util.Params( kwd ) + message = util.restore_text( params.get( 'message', '' ) ) + status = params.get( 'status', 'done' ) + tool_dependency = get_tool_dependency( trans, kwd[ 'id' ] ) + repository = get_repository( trans, kwd[ 'repository_id' ] ) + return trans.fill_template( '/admin/tool_shed_repository/browse_tool_dependency.mako', + repository=repository, + tool_dependency=tool_dependency, + message=message, + status=status ) + @web.expose + @web.require_admin def browse_tool_shed( self, trans, **kwd ): tool_shed_url = kwd[ 'tool_shed_url' ] galaxy_url = url_for( '/', qualified=True ) @@ -256,6 +269,7 @@ url = '%srepository/find_workflows?galaxy_url=%s&webapp=galaxy&no_reset=true' % ( tool_shed_url, galaxy_url ) return trans.response.send_redirect( url ) @web.json + @web.require_admin def get_file_contents( self, trans, file_path ): # Avoid caching trans.response.headers['Pragma'] = 'no-cache' @@ -341,7 +355,7 @@ for dependency_key, requirements_dict in tool_dependencies.items(): name = requirements_dict[ 'name' ] version = requirements_dict[ 'version' ] - install_dir = get_install_dir( trans.app, repository, repository.changeset_revision, name, version ) + install_dir = get_tool_dependency_install_dir( trans.app, repository, repository.changeset_revision, name, version ) if not_installed( install_dir ): filtered_tool_dependencies[ dependency_key ] = requirements_dict tool_dependencies = filtered_tool_dependencies @@ -585,6 +599,7 @@ message=message, status=status ) @web.json + @web.require_admin def open_folder( self, trans, folder_path ): # Avoid caching trans.response.headers['Pragma'] = 'no-cache' diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e templates/admin/tool_shed_repository/browse_repository.mako --- a/templates/admin/tool_shed_repository/browse_repository.mako +++ b/templates/admin/tool_shed_repository/browse_repository.mako @@ -10,7 +10,7 @@ <%def name="javascripts()"> ${parent.javascripts()} ${h.js( "ui.core", "jquery.dynatree" )} - ${common_javascripts(repository)} + ${common_javascripts(repository.name, repository.repo_files_directory(trans.app))} </%def><br/><br/> diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e templates/admin/tool_shed_repository/browse_tool_dependency.mako --- /dev/null +++ b/templates/admin/tool_shed_repository/browse_tool_dependency.mako @@ -0,0 +1,62 @@ +<%inherit file="/base.mako"/> +<%namespace file="/message.mako" import="render_msg" /> +<%namespace file="/admin/tool_shed_repository/common.mako" import="*" /> + +<%def name="stylesheets()"> + ${parent.stylesheets()} + ${h.css( "dynatree_skin/ui.dynatree" )} +</%def> + +<%def name="javascripts()"> + ${parent.javascripts()} + ${h.js( "ui.core", "jquery.dynatree" )} + ${common_javascripts(tool_dependency.name, tool_dependency.installation_directory( trans.app ))} +</%def> + +<br/><br/> +<ul class="manage-table-actions"> + <li><a class="action-button" id="tool_dependency-${tool_dependency.id}-popup" class="menubutton">Repository Actions</a></li> + <div popupmenu="tool_dependency-${tool_dependency.id}-popup"> + <a class="action-button" href="${h.url_for( controller='admin_toolshed', action='manage_repository', id=trans.security.encode_id( repository.id ) )}">Manage repository</a> + <a class="action-button" href="${h.url_for( controller='admin_toolshed', action='check_for_updates', id=trans.security.encode_id( repository.id ) )}">Get updates</a> + <a class="action-button" href="${h.url_for( controller='admin_toolshed', action='deactivate_or_uninstall_repository', id=trans.security.encode_id( repository.id ) )}">Deactivate or Uninstall</a> + %if repository.tool_dependencies: + <a class="action-button" href="${h.url_for( controller='admin_toolshed', action='manage_tool_dependencies', id=trans.security.encode_id( repository.id ) )}">Manage tool dependencies</a> + %endif + </div> +</ul> + +%if message: + ${render_msg( message, status )} +%endif + +<div class="toolForm"> + <div class="toolFormTitle">Browse tool dependency ${tool_dependency.name} installation directory</div> + <div class="toolFormBody"> + <div class="form-row" > + <label>Tool shed repository:</label> + ${repository.name} + <div style="clear: both"></div> + </div> + <div class="form-row" > + <label>Tool shed repository changeset revision:</label> + ${repository.changeset_revision} + <div style="clear: both"></div> + </div> + <div class="form-row" > + <label>Tool dependency installation directory:</label> + ${tool_dependency.installation_directory( trans.app )} + <div style="clear: both"></div> + </div> + <div class="form-row" > + <label>Contents:</label> + <div id="tree" > + Loading... + </div> + <div style="clear: both"></div> + </div> + <div class="form-row"> + <div id="file_contents" class="toolParamHelp" style="clear: both;background-color:#FAFAFA;"></div> + </div> + </div> +</div> diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e templates/admin/tool_shed_repository/common.mako --- a/templates/admin/tool_shed_repository/common.mako +++ b/templates/admin/tool_shed_repository/common.mako @@ -1,4 +1,4 @@ -<%def name="common_javascripts(repository)"> +<%def name="common_javascripts(title_text, directory_path)"><script type="text/javascript"> $(function(){ $("#tree").ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) { @@ -6,7 +6,7 @@ }); // --- Initialize sample trees $("#tree").dynatree({ - title: "${repository.name}", + title: "${title_text}", rootVisible: true, minExpandLevel: 0, // 1: root node is not collapsible persist: false, @@ -22,7 +22,7 @@ // initAjax is hard to fake, so we pass the children as object array: initAjax: {url: "${h.url_for( controller='admin_toolshed', action='open_folder' )}", dataType: "json", - data: { folder_path: "${repository.repo_files_directory(trans.app)}" }, + data: { folder_path: "${directory_path}" }, }, onLazyRead: function(dtnode){ dtnode.appendAjax({ @@ -43,7 +43,7 @@ var cell = $("#file_contents"); var selected_value; if (dtnode.data.key == 'root') { - selected_value = "${repository.repo_files_directory(trans.app)}/"; + selected_value = "${directory_path}/"; } else { selected_value = dtnode.data.key; }; @@ -66,221 +66,3 @@ }); </script></%def> - -<%def name="render_repository_contents( repository, can_reset_metadata=False )"> - <div class="toolForm"> - <div class="toolFormTitle">${repository.name}</div> - <div class="toolFormBody"> - <% - metadata = repository.metadata - missing_tool_dependencies = repository.missing_tool_dependencies - installed_tool_dependencies = repository.installed_tool_dependencies - %> - %if missing_tool_dependencies: - <div class="form-row"> - <table width="100%"> - <tr bgcolor="#D8D8D8" width="100%"> - <td><b>Missing tool dependencies</i></td> - </tr> - </table> - </div> - <div style="clear: both"></div> - <div class="form-row"> - <table class="grid"> - <tr> - <td><b>name</b></td> - <td><b>type</b></td> - <td><b>version</b></td> - </tr> - %for name, requirements_dict in missing_tool_dependencies.items(): - <tr> - <td>${requirements_dict[ 'name' ]}</td> - <td>${requirements_dict[ 'type' ]}</td> - <td>${requirements_dict[ 'version' ]}</td> - </tr> - %endfor - </table> - </div> - <div style="clear: both"></div> - %endif - %if installed_tool_dependencies: - <div class="form-row"> - <table width="100%"> - <tr bgcolor="#D8D8D8" width="100%"> - <td><b>Installed tool dependencies</i></td> - </tr> - </table> - </div> - <div style="clear: both"></div> - <div class="form-row"> - <table class="grid"> - <tr> - <td><b>name</b></td> - <td><b>type</b></td> - <td><b>version</b></td> - </tr> - %for installed_tool_dependency in installed_tool_dependencies: - <tr> - <td>${installed_tool_dependency.name}</td> - <td>${installed_tool_dependency.type}</td> - <td>${installed_tool_dependency.version}</td> - </tr> - %endfor - </table> - </div> - <div style="clear: both"></div> - %endif - %if 'tools' in metadata: - <div class="form-row"> - <table width="100%"> - <tr bgcolor="#D8D8D8" width="100%"> - <td><b>Tools</b><i> - click the name to view information about the tool</i></td> - </tr> - </table> - </div> - <div class="form-row"> - <% tool_dicts = metadata[ 'tools' ] %> - <table class="grid"> - <tr> - <td><b>name</b></td> - <td><b>description</b></td> - <td><b>version</b></td> - <td><b>requirements</b></td> - </tr> - %for tool_dict in tool_dicts: - <tr> - <td> - <a class="view-info" href="${h.url_for( controller='admin_toolshed', action='view_tool_metadata', repository_id=trans.security.encode_id( repository.id ), tool_id=tool_dict[ 'id' ] )}"> - ${tool_dict[ 'name' ]} - </a> - </td> - <td>${tool_dict[ 'description' ]}</td> - <td>${tool_dict[ 'version' ]}</td> - <td> - <% - if 'requirements' in tool_dict: - requirements = tool_dict[ 'requirements' ] - else: - requirements = None - %> - %if requirements: - <% - requirements_str = '' - for requirement_dict in tool_dict[ 'requirements' ]: - requirements_str += '%s (%s), ' % ( requirement_dict[ 'name' ], requirement_dict[ 'type' ] ) - requirements_str = requirements_str.rstrip( ', ' ) - %> - ${requirements_str} - %else: - none - %endif - </td> - </tr> - %endfor - </table> - </div> - <div style="clear: both"></div> - %endif - %if 'workflows' in metadata: - ## metadata[ 'workflows' ] is a list of tuples where each contained tuple is - ## [ <relative path to the .ga file in the repository>, <exported workflow dict> ] - <div class="form-row"> - <table width="100%"> - <tr bgcolor="#D8D8D8" width="100%"> - <td><b>Workflows</b><i> - click the name to import</i></td> - </tr> - </table> - </div> - <div style="clear: both"></div> - <div class="form-row"> - <% workflow_tups = metadata[ 'workflows' ] %> - <table class="grid"> - <tr> - <td><b>name</b></td> - <td><b>steps</b></td> - <td><b>format-version</b></td> - <td><b>annotation</b></td> - </tr> - <% index = 0 %> - %for workflow_tup in workflow_tups: - <% - import os.path - relative_path = workflow_tup[ 0 ] - full_path = os.path.abspath( relative_path ) - workflow_dict = workflow_tup[ 1 ] - workflow_name = workflow_dict[ 'name' ] - ## Initially steps were not stored in the metadata record. - steps = workflow_dict.get( 'steps', [] ) - format_version = workflow_dict[ 'format-version' ] - annotation = workflow_dict[ 'annotation' ] - %> - <tr> - <td> - <div class="menubutton" style="float: left;" id="workflow-${index}-popup"> - ${workflow_name} - <div popupmenu="workflow-${index}-popup"> - <a class="action-button" href="${h.url_for( controller='workflow', action='import_workflow', installed_repository_file=full_path, repository_id=trans.security.encode_id( repository.id ) )}">Import to Galaxy</a> - </div> - </div> - </td> - <td> - %if steps: - ${len( steps )} - %else: - unknown - %endif - </td> - <td>${format_version}</td> - <td>${annotation}</td> - </tr> - <% index += 1 %> - %endfor - </table> - </div> - <div style="clear: both"></div> - %endif - %if 'datatypes' in metadata: - <div class="form-row"> - <table width="100%"> - <tr bgcolor="#D8D8D8" width="100%"> - <td><b>Data types</b></td> - </tr> - </table> - </div> - <div style="clear: both"></div> - <div class="form-row"> - <% datatypes_dicts = metadata[ 'datatypes' ] %> - <table class="grid"> - <tr> - <td><b>extension</b></td> - <td><b>type</b></td> - <td><b>mimetype</b></td> - <td><b>subclass</b></td> - </tr> - %for datatypes_dict in datatypes_dicts: - <tr> - <td>${datatypes_dict.get( 'extension', ' ' )}</td> - <td>${datatypes_dict.get( 'dtype', ' ' )}</td> - <td>${datatypes_dict.get( 'mimetype', ' ' )}</td> - <td>${datatypes_dict.get( 'subclass', ' ' )}</td> - </tr> - %endfor - </table> - </div> - <div style="clear: both"></div> - %endif - %if can_reset_metadata: - <form name="set_metadata" action="${h.url_for( controller='admin_toolshed', action='manage_repository', id=trans.security.encode_id( repository.id ) )}" method="post"> - <div class="form-row"> - <div style="float: left; width: 250px; margin-right: 10px;"> - <input type="submit" name="set_metadata_button" value="Reset metadata"/> - </div> - <div class="toolParamHelp" style="clear: both;"> - Inspect the repository and reset the above attributes. - </div> - </div> - </form> - %endif - </div> - </div> -</%def> diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e templates/admin/tool_shed_repository/manage_repository.mako --- a/templates/admin/tool_shed_repository/manage_repository.mako +++ b/templates/admin/tool_shed_repository/manage_repository.mako @@ -64,5 +64,223 @@ </div></div><p/> -${render_repository_contents( repository, can_reset_metadata=True )} +<div class="toolForm"> + <div class="toolFormTitle">${repository.name}</div> + <div class="toolFormBody"> + <% + metadata = repository.metadata + missing_tool_dependencies = repository.missing_tool_dependencies + installed_tool_dependencies = repository.installed_tool_dependencies + %> + %if missing_tool_dependencies: + <div class="form-row"> + <table width="100%"> + <tr bgcolor="#D8D8D8" width="100%"> + <td><b>Missing tool dependencies</i></td> + </tr> + </table> + </div> + <div style="clear: both"></div> + <div class="form-row"> + <table class="grid"> + <tr> + <td><b>name</b></td> + <td><b>type</b></td> + <td><b>version</b></td> + </tr> + %for name, requirements_dict in missing_tool_dependencies.items(): + <tr> + <td>${requirements_dict[ 'name' ]}</td> + <td>${requirements_dict[ 'type' ]}</td> + <td>${requirements_dict[ 'version' ]}</td> + </tr> + %endfor + </table> + </div> + <div style="clear: both"></div> + %endif + %if installed_tool_dependencies: + <div class="form-row"> + <table width="100%"> + <tr bgcolor="#D8D8D8" width="100%"> + <td><b>Installed tool dependencies<i> - click the name to browse the dependency installation directory</i></td> + </tr> + </table> + </div> + <div style="clear: both"></div> + <div class="form-row"> + <table class="grid"> + <tr> + <td><b>name</b></td> + <td><b>type</b></td> + <td><b>version</b></td> + </tr> + %for installed_tool_dependency in installed_tool_dependencies: + <tr> + <td> + <a class="view-info" href="${h.url_for( controller='admin_toolshed', action='browse_tool_dependency', id=trans.security.encode_id( installed_tool_dependency.id ), repository_id=trans.security.encode_id( repository.id ) )}"> + ${installed_tool_dependency.name} + </a> + </td> + <td>${installed_tool_dependency.type}</td> + <td>${installed_tool_dependency.version}</td> + </tr> + %endfor + </table> + </div> + <div style="clear: both"></div> + %endif + %if 'tools' in metadata: + <div class="form-row"> + <table width="100%"> + <tr bgcolor="#D8D8D8" width="100%"> + <td><b>Tools</b><i> - click the name to view information about the tool</i></td> + </tr> + </table> + </div> + <div class="form-row"> + <% tool_dicts = metadata[ 'tools' ] %> + <table class="grid"> + <tr> + <td><b>name</b></td> + <td><b>description</b></td> + <td><b>version</b></td> + <td><b>requirements</b></td> + </tr> + %for tool_dict in tool_dicts: + <tr> + <td> + <a class="view-info" href="${h.url_for( controller='admin_toolshed', action='view_tool_metadata', repository_id=trans.security.encode_id( repository.id ), tool_id=tool_dict[ 'id' ] )}"> + ${tool_dict[ 'name' ]} + </a> + </td> + <td>${tool_dict[ 'description' ]}</td> + <td>${tool_dict[ 'version' ]}</td> + <td> + <% + if 'requirements' in tool_dict: + requirements = tool_dict[ 'requirements' ] + else: + requirements = None + %> + %if requirements: + <% + requirements_str = '' + for requirement_dict in tool_dict[ 'requirements' ]: + requirements_str += '%s (%s), ' % ( requirement_dict[ 'name' ], requirement_dict[ 'type' ] ) + requirements_str = requirements_str.rstrip( ', ' ) + %> + ${requirements_str} + %else: + none + %endif + </td> + </tr> + %endfor + </table> + </div> + <div style="clear: both"></div> + %endif + %if 'workflows' in metadata: + ## metadata[ 'workflows' ] is a list of tuples where each contained tuple is + ## [ <relative path to the .ga file in the repository>, <exported workflow dict> ] + <div class="form-row"> + <table width="100%"> + <tr bgcolor="#D8D8D8" width="100%"> + <td><b>Workflows</b><i> - click the name to import</i></td> + </tr> + </table> + </div> + <div style="clear: both"></div> + <div class="form-row"> + <% workflow_tups = metadata[ 'workflows' ] %> + <table class="grid"> + <tr> + <td><b>name</b></td> + <td><b>steps</b></td> + <td><b>format-version</b></td> + <td><b>annotation</b></td> + </tr> + <% index = 0 %> + %for workflow_tup in workflow_tups: + <% + import os.path + relative_path = workflow_tup[ 0 ] + full_path = os.path.abspath( relative_path ) + workflow_dict = workflow_tup[ 1 ] + workflow_name = workflow_dict[ 'name' ] + ## Initially steps were not stored in the metadata record. + steps = workflow_dict.get( 'steps', [] ) + format_version = workflow_dict[ 'format-version' ] + annotation = workflow_dict[ 'annotation' ] + %> + <tr> + <td> + <div class="menubutton" style="float: left;" id="workflow-${index}-popup"> + ${workflow_name} + <div popupmenu="workflow-${index}-popup"> + <a class="action-button" href="${h.url_for( controller='workflow', action='import_workflow', installed_repository_file=full_path, repository_id=trans.security.encode_id( repository.id ) )}">Import to Galaxy</a> + </div> + </div> + </td> + <td> + %if steps: + ${len( steps )} + %else: + unknown + %endif + </td> + <td>${format_version}</td> + <td>${annotation}</td> + </tr> + <% index += 1 %> + %endfor + </table> + </div> + <div style="clear: both"></div> + %endif + %if 'datatypes' in metadata: + <div class="form-row"> + <table width="100%"> + <tr bgcolor="#D8D8D8" width="100%"> + <td><b>Data types</b></td> + </tr> + </table> + </div> + <div style="clear: both"></div> + <div class="form-row"> + <% datatypes_dicts = metadata[ 'datatypes' ] %> + <table class="grid"> + <tr> + <td><b>extension</b></td> + <td><b>type</b></td> + <td><b>mimetype</b></td> + <td><b>subclass</b></td> + </tr> + %for datatypes_dict in datatypes_dicts: + <tr> + <td>${datatypes_dict.get( 'extension', ' ' )}</td> + <td>${datatypes_dict.get( 'dtype', ' ' )}</td> + <td>${datatypes_dict.get( 'mimetype', ' ' )}</td> + <td>${datatypes_dict.get( 'subclass', ' ' )}</td> + </tr> + %endfor + </table> + </div> + <div style="clear: both"></div> + %endif + %if can_reset_metadata: + <form name="set_metadata" action="${h.url_for( controller='admin_toolshed', action='manage_repository', id=trans.security.encode_id( repository.id ) )}" method="post"> + <div class="form-row"> + <div style="float: left; width: 250px; margin-right: 10px;"> + <input type="submit" name="set_metadata_button" value="Reset metadata"/> + </div> + <div class="toolParamHelp" style="clear: both;"> + Inspect the repository and reset the above attributes. + </div> + </div> + </form> + %endif + </div> +</div><p/> diff -r b1f35669f93c4163cf803d64beb37a1cb0d5381c -r bef69fd3fcc191b9a9a4d140876a6ee932e9fc3e templates/admin/tool_shed_repository/manage_tool_dependencies.mako --- a/templates/admin/tool_shed_repository/manage_tool_dependencies.mako +++ b/templates/admin/tool_shed_repository/manage_tool_dependencies.mako @@ -24,7 +24,7 @@ %endif <div class="toolForm"> - <div class="toolFormTitle">${repository.name} repository's installed tool dependencies</div> + <div class="toolFormTitle">${repository.name} repository's tool dependencies</div><div class="toolFormBody"><div class="form-row"><table class="grid"> @@ -45,7 +45,18 @@ <tr><td bgcolor="#D8D8D8"><b>Name</b></td><td bgcolor="#D8D8D8">${name}</td></tr><tr><th>Version</th><td>${version}</td></tr><tr><th>Type</th><td>${type}</td></tr> - <tr><th>Install directory</th><td>${install_dir}</td></tr> + <tr> + <th>Install directory</th> + <td> + %if uninstalled: + This dependency is not currently installed + %else: + <a class="view-info" href="${h.url_for( controller='admin_toolshed', action='browse_tool_dependency', id=trans.security.encode_id( tool_dependency.id ), repository_id=trans.security.encode_id( repository.id ) )}"> + ${install_dir} + </a> + %endif + </td> + </tr><tr><th>Installed changeset revision</th><td>${installed_changeset_revision}</td></tr><tr><th>Uninstalled</th><td>${uninstalled}</td></tr> %endfor Repository URL: https://bitbucket.org/galaxy/galaxy-central/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.
participants (1)
-
Bitbucket