diff --git a/lib/galaxy/tools/deps/resolvers/conda.py b/lib/galaxy/tools/deps/resolvers/conda.py index c77b0d96cf9..0d8765f0d74 100644 --- a/lib/galaxy/tools/deps/resolvers/conda.py +++ b/lib/galaxy/tools/deps/resolvers/conda.py @@ -232,7 +232,7 @@ class CondaDependencyResolver(DependencyResolver, MultipleDependencyResolver, Li if job_directory: conda_environment = os.path.join(job_directory, conda_env) else: - conda_environment = None + conda_environment = self.conda_context.env_path(conda_target.install_environment) return CondaDependency( self.conda_context, diff --git a/lib/galaxy/web/base/controllers/admin.py b/lib/galaxy/web/base/controllers/admin.py index 8c671160008..4fd10225821 100644 --- a/lib/galaxy/web/base/controllers/admin.py +++ b/lib/galaxy/web/base/controllers/admin.py @@ -1,7 +1,7 @@ import logging import os from datetime import datetime, timedelta -from six import string_types +import six from string import punctuation as PUNCTUATION from sqlalchemy import and_, false, func, or_ @@ -1123,6 +1123,30 @@ class Admin( object ): job=job, message="Back" ) + @web.expose + @web.require_admin + def manage_tool_dependencies( self, trans, install_dependencies=False, build_cache=False, install_for_tools=[], viewkey='View tool-centric dependencies'): + tools_by_id = trans.app.toolbox.tools_by_id + if install_dependencies: + # install the dependencies for the tools in the install_for_tools list + if not isinstance(install_for_tools, list): + install_for_tools = [install_for_tools] + requirements = set([tools_by_id[tid].tool_requirements for tid in install_for_tools]) + [trans.app.toolbox.tools_by_id[install_for_tools[0]]._view.install_dependencies(r) for r in requirements] + view = six.next(six.itervalues(trans.app.toolbox.tools_by_id))._view + tool_ids_by_requirements = {} + for tid, tool in trans.app.toolbox.tools_by_id.items(): + if tool.tool_requirements not in tool_ids_by_requirements: + tool_ids_by_requirements[tool.tool_requirements] = [tid] + else: + tool_ids_by_requirements[tool.tool_requirements].append(tid) + requirements_status = {r: view.get_requirements_status({tid: r}, tools_by_id[tids[0]].installed_tool_dependencies) for r, tids in tool_ids_by_requirements.items()} + return trans.fill_template( '/webapps/galaxy/admin/manage_dependencies.mako', + tools=tools_by_id, + requirements_status=requirements_status, + tool_ids_by_requirements=tool_ids_by_requirements, + viewkey=viewkey ) + @web.expose @web.require_admin def sanitize_whitelist( self, trans, submit_whitelist=False, tools_to_whitelist=[]): @@ -1130,7 +1154,7 @@ class Admin( object ): # write the configured sanitize_whitelist_file with new whitelist # and update in-memory list. with open(trans.app.config.sanitize_whitelist_file, 'wt') as f: - if isinstance(tools_to_whitelist, string_types): + if isinstance(tools_to_whitelist, six.string_types): tools_to_whitelist = [tools_to_whitelist] new_whitelist = sorted([tid for tid in tools_to_whitelist if tid in trans.app.toolbox.tools_by_id]) f.write("\n".join(new_whitelist)) diff --git a/templates/webapps/galaxy/admin/index.mako b/templates/webapps/galaxy/admin/index.mako index 0f8bc97b659..c0b5e049e7a 100644 --- a/templates/webapps/galaxy/admin/index.mako +++ b/templates/webapps/galaxy/admin/index.mako @@ -78,6 +78,7 @@
+ diff --git a/templates/webapps/galaxy/admin/manage_dependencies.mako b/templates/webapps/galaxy/admin/manage_dependencies.mako new file mode 100644 index 00000000000..a7f0d6fb554 --- /dev/null +++ b/templates/webapps/galaxy/admin/manage_dependencies.mako @@ -0,0 +1,114 @@ +<%inherit file="/base.mako"/> +<%namespace file="/webapps/tool_shed/repository/common.mako" import="render_dependency_status"/> +<%namespace file="/message.mako" import="render_msg" /> + +<%def name="render_tool_dependencies( requirements_status, ctr=False, ncols_extra=4, show_environment_path=False )"> + %for i, dependency in enumerate(requirements_status): + %if i != 0: + + %if ctr % 2 == 1: +This page gives an overview of all tool dependencies required by all tools currently loaded, including tools not installed through the Tool Shed.
+ +