Skip to content

Commit 90acf71

Browse files
committed
Add install resolver dependency button
and add install_resolver_dependency to ToolShedRepositoriesController
1 parent 71e0982 commit 90acf71

File tree

8 files changed

+57
-6
lines changed

8 files changed

+57
-6
lines changed

lib/galaxy/webapps/galaxy/api/tool_shed_repositories.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ def install( self, trans, **kwd ):
246246
POST /api/tool_shed_repositories/install
247247
Initiate the installation of a repository.
248248
249+
:param install_resolver_dependencies: True to install resolvable dependencies.
249250
:param install_tool_dependencies: True to install tool dependencies.
250251
:param install_repository_dependencies: True to install repository dependencies.
251252
:param tool_panel_section_id: The unique identifier for an existing tool panel section
@@ -263,6 +264,7 @@ def install( self, trans, **kwd ):
263264
params[ 'tool_panel_section_id' ] = kwd.get( 'tool_panel_section_id', None )
264265
params[ 'new_tool_panel_section_label' ] = kwd.get( 'new_tool_panel_section', None )
265266
params[ 'tool_panel_section_mapping' ] = json.loads( kwd.get( 'tool_panel_section', '{}' ) )
267+
params[ 'install_resolver_dependencies' ] = util.asbool( kwd.get( 'install_resolver_dependencies', False ) )
266268
params[ 'install_tool_dependencies' ] = util.asbool( kwd.get( 'install_tool_dependencies', False ) )
267269
params[ 'install_repository_dependencies' ] = util.asbool( kwd.get( 'install_repository_dependencies', False ) )
268270
params[ 'shed_tool_conf' ] = kwd.get( 'shed_tool_conf', None )
@@ -394,6 +396,7 @@ def install_repository_revisions( self, trans, payload, **kwd ):
394396
# TODO: we may want to enhance this method to allow for each of the following to be associated with each repository instead of
395397
# forcing all repositories to use the same settings.
396398
install_repository_dependencies = payload.get( 'install_repository_dependencies', False )
399+
install_resolver_dependencies = payload.get( 'install_resolver_dependencies', False )
397400
install_tool_dependencies = payload.get( 'install_tool_dependencies', False )
398401
new_tool_panel_section_label = payload.get( 'new_tool_panel_section_label', '' )
399402
shed_tool_conf = payload.get( 'shed_tool_conf', None )
@@ -407,6 +410,7 @@ def install_repository_revisions( self, trans, payload, **kwd ):
407410
new_tool_panel_section_label=new_tool_panel_section_label,
408411
tool_panel_section_id=tool_panel_section_id,
409412
install_repository_dependencies=install_repository_dependencies,
413+
install_resolver_dependencies=install_resolver_dependencies,
410414
install_tool_dependencies=install_tool_dependencies,
411415
shed_tool_conf=shed_tool_conf )
412416
installed_tool_shed_repositories = self.install_repository_revision( trans, **current_payload )

lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,13 @@ def install_tool_dependencies_with_update( self, trans, **kwd ):
677677
install_tool_dependencies_check_box_checked = True
678678
install_tool_dependencies_check_box = CheckboxField( 'install_tool_dependencies',
679679
checked=install_tool_dependencies_check_box_checked )
680+
view = views.DependencyResolversView(self.app)
681+
if view.installable_resolvers:
682+
install_resolver_dependencies_check_box_checked = True
683+
else:
684+
install_resolver_dependencies_check_box_checked = False
685+
install_resolver_dependencies_check_box = CheckboxField( 'install_resolver_dependencies',
686+
checked=install_resolver_dependencies_check_box_checked )
680687
return trans.fill_template( '/admin/tool_shed_repository/install_tool_dependencies_with_update.mako',
681688
repository=repository,
682689
updating_repository_id=updating_repository_id,
@@ -686,6 +693,7 @@ def install_tool_dependencies_with_update( self, trans, **kwd ):
686693
encoded_relative_install_dir=encoded_relative_install_dir,
687694
encoded_tool_dependencies_dict=encoded_tool_dependencies_dict,
688695
install_tool_dependencies_check_box=install_tool_dependencies_check_box,
696+
install_resolver_dependencies_check_box=install_resolver_dependencies_check_box,
689697
tool_dependencies_dict=tool_dependencies_dict,
690698
message=message,
691699
status=status )
@@ -731,8 +739,10 @@ def manage_repositories( self, trans, **kwd ):
731739
encoded_kwd = kwd[ 'encoded_kwd' ]
732740
decoded_kwd = encoding_util.tool_shed_decode( encoded_kwd )
733741
install_tool_dependencies = CheckboxField.is_checked( decoded_kwd.get( 'install_tool_dependencies', '' ) )
742+
install_resolver_dependencies = CheckboxField.is_checked( decoded_kwd.get( 'install_resolver_dependencies', '' ) )
734743
tsr_ids = decoded_kwd[ 'tool_shed_repository_ids' ]
735744
decoded_kwd['install_tool_dependencies'] = install_tool_dependencies
745+
decoded_kwd['install_resolver_dependencies'] = install_resolver_dependencies
736746
try:
737747
tool_shed_repositories = irm.install_repositories(
738748
tsr_ids=tsr_ids,
@@ -1223,6 +1233,13 @@ def prepare_for_install( self, trans, **kwd ):
12231233
checked=install_tool_dependencies_check_box_checked )
12241234
# Handle repository dependencies check box.
12251235
install_repository_dependencies_check_box = CheckboxField( 'install_repository_dependencies', checked=True )
1236+
view = views.DependencyResolversView(self.app)
1237+
if view.installable_resolvers:
1238+
install_resolver_dependencies_check_box_checked = True
1239+
else:
1240+
install_resolver_dependencies_check_box_checked = False
1241+
install_resolver_dependencies_check_box = CheckboxField( 'install_resolver_dependencies',
1242+
checked=install_resolver_dependencies_check_box_checked )
12261243
encoded_repo_info_dicts = encoding_util.encoding_sep.join( encoded_repo_info_dicts )
12271244
tool_shed_url = kwd[ 'tool_shed_url' ]
12281245
if includes_tools_for_display_in_tool_panel:
@@ -1237,6 +1254,7 @@ def prepare_for_install( self, trans, **kwd ):
12371254
includes_tools_for_display_in_tool_panel=includes_tools_for_display_in_tool_panel,
12381255
includes_tool_dependencies=includes_tool_dependencies,
12391256
install_tool_dependencies_check_box=install_tool_dependencies_check_box,
1257+
install_resolver_dependencies_check_box=install_resolver_dependencies_check_box,
12401258
has_repository_dependencies=has_repository_dependencies,
12411259
install_repository_dependencies_check_box=install_repository_dependencies_check_box,
12421260
new_tool_panel_section_label=new_tool_panel_section_label,
@@ -1338,6 +1356,7 @@ def reinstall_repository( self, trans, **kwd ):
13381356
no_changes_checked = CheckboxField.is_checked( no_changes )
13391357
install_repository_dependencies = CheckboxField.is_checked( kwd.get( 'install_repository_dependencies', '' ) )
13401358
install_tool_dependencies = CheckboxField.is_checked( kwd.get( 'install_tool_dependencies', '' ) )
1359+
install_resolver_dependencies = CheckboxField.is_checked( kwd.get( 'install_resolver_dependencies', '' ) )
13411360
shed_tool_conf, tool_path, relative_install_dir = \
13421361
suc.get_tool_panel_config_tool_path_install_dir( trans.app, tool_shed_repository )
13431362
repository_clone_url = common_util.generate_clone_url_for_installed_repository( trans.app, tool_shed_repository )
@@ -1442,6 +1461,7 @@ def reinstall_repository( self, trans, **kwd ):
14421461
includes_tools=tool_shed_repository.includes_tools,
14431462
includes_tools_for_display_in_tool_panel=tool_shed_repository.includes_tools_for_display_in_tool_panel,
14441463
install_tool_dependencies=install_tool_dependencies,
1464+
install_resolver_dependencies=install_resolver_dependencies,
14451465
repo_info_dicts=filtered_repo_info_dicts,
14461466
message=message,
14471467
new_tool_panel_section_label=new_tool_panel_section_label,
@@ -1695,6 +1715,13 @@ def reselect_tool_panel_section( self, trans, **kwd ):
16951715
else:
16961716
install_tool_dependencies_check_box_checked = True
16971717
install_tool_dependencies_check_box = CheckboxField( 'install_tool_dependencies', checked=install_tool_dependencies_check_box_checked )
1718+
view = views.DependencyResolversView(self.app)
1719+
if view.installable_resolvers:
1720+
install_resolver_dependencies_check_box_checked = True
1721+
else:
1722+
install_resolver_dependencies_check_box_checked = False
1723+
install_resolver_dependencies_check_box = CheckboxField( 'install_resolver_dependencies',
1724+
checked=install_resolver_dependencies_check_box_checked )
16981725
return trans.fill_template( '/admin/tool_shed_repository/reselect_tool_panel_section.mako',
16991726
repository=tool_shed_repository,
17001727
no_changes_check_box=no_changes_check_box,
@@ -1708,6 +1735,7 @@ def reselect_tool_panel_section( self, trans, **kwd ):
17081735
has_repository_dependencies=has_repository_dependencies,
17091736
install_repository_dependencies_check_box=install_repository_dependencies_check_box,
17101737
install_tool_dependencies_check_box=install_tool_dependencies_check_box,
1738+
install_resolver_dependencies_check_box=install_resolver_dependencies_check_box,
17111739
containers_dict=containers_dict,
17121740
tool_panel_section_select_field=tool_panel_section_select_field,
17131741
shed_tool_conf_select_field=shed_tool_conf_select_field,

lib/tool_shed/galaxy_install/install_manager.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,7 @@ def __initiate_and_install_repositories( self, tool_shed_url, repository_revisio
725725
raise exceptions.InternalServerError( "Tool shed response missing required parameter 'includes_tools_for_display_in_tool_panel'." )
726726
# Get the information about the Galaxy components (e.g., tool pane section, tool config file, etc) that will contain the repository information.
727727
install_repository_dependencies = install_options.get( 'install_repository_dependencies', False )
728+
install_resolver_dependencies = install_options.get( 'install_resolver_dependencies', False)
728729
install_tool_dependencies = install_options.get( 'install_tool_dependencies', False )
729730
if install_tool_dependencies:
730731
self.__assert_can_install_dependencies()
@@ -766,6 +767,7 @@ def __initiate_and_install_repositories( self, tool_shed_url, repository_revisio
766767
includes_tools=includes_tools,
767768
includes_tools_for_display_in_tool_panel=includes_tools_for_display_in_tool_panel,
768769
install_repository_dependencies=install_repository_dependencies,
770+
install_resolver_dependencies=install_resolver_dependencies,
769771
install_tool_dependencies=install_tool_dependencies,
770772
message='',
771773
new_tool_panel_section_label=new_tool_panel_section_label,
@@ -795,6 +797,7 @@ def __initiate_and_install_repositories( self, tool_shed_url, repository_revisio
795797
tool_path=tool_path,
796798
tool_panel_section_keys=tool_panel_section_keys,
797799
repo_info_dicts=filtered_repo_info_dicts,
800+
install_resolver_dependencies=install_resolver_dependencies,
798801
install_tool_dependencies=install_tool_dependencies,
799802
tool_panel_section_mapping=tool_panel_section_mapping,
800803
)
@@ -806,6 +809,7 @@ def install_repositories( self, tsr_ids, decoded_kwd, reinstalling ):
806809
tool_panel_section_keys = util.listify( decoded_kwd[ 'tool_panel_section_keys' ] )
807810
tool_panel_section_mapping = decoded_kwd.get( 'tool_panel_section_mapping', {} )
808811
repo_info_dicts = util.listify( decoded_kwd[ 'repo_info_dicts' ] )
812+
install_resolver_dependencies = decoded_kwd['install_resolver_dependencies']
809813
install_tool_dependencies = decoded_kwd['install_tool_dependencies']
810814
filtered_repo_info_dicts = []
811815
filtered_tool_panel_section_keys = []
@@ -841,6 +845,7 @@ def install_repositories( self, tsr_ids, decoded_kwd, reinstalling ):
841845
tool_panel_section_key=tool_panel_section_key,
842846
shed_tool_conf=shed_tool_conf,
843847
tool_path=tool_path,
848+
install_resolver_dependencies=install_resolver_dependencies,
844849
install_tool_dependencies=install_tool_dependencies,
845850
reinstalling=reinstalling,
846851
tool_panel_section_mapping=tool_panel_section_mapping )
@@ -850,7 +855,7 @@ def install_repositories( self, tsr_ids, decoded_kwd, reinstalling ):
850855
return installed_tool_shed_repositories
851856

852857
def install_tool_shed_repository( self, tool_shed_repository, repo_info_dict, tool_panel_section_key, shed_tool_conf, tool_path,
853-
install_tool_dependencies, reinstalling=False, tool_panel_section_mapping={} ):
858+
install_resolver_dependencies, install_tool_dependencies, reinstalling=False, tool_panel_section_mapping={} ):
854859
self.app.install_model.context.flush()
855860
if tool_panel_section_key:
856861
_, tool_section = self.app.toolbox.get_section( tool_panel_section_key )
@@ -908,7 +913,7 @@ def install_tool_shed_repository( self, tool_shed_repository, repo_info_dict, to
908913
error_message += "Version information for the tools included in the <b>%s</b> repository is missing. " % tool_shed_repository.name
909914
error_message += "Reset all of this repository's metadata in the tool shed, then set the installed tool versions "
910915
error_message += "from the installed repository's <b>Repository Actions</b> menu. "
911-
if install_tool_dependencies:
916+
if install_resolver_dependencies:
912917
requirements = suc.get_unique_requirements_from_repository(tool_shed_repository)
913918
[self._view.install_dependency(id=None, **req) for req in requirements]
914919
if install_tool_dependencies and tool_shed_repository.tool_dependencies and 'tool_dependencies' in metadata:

templates/admin/tool_shed_repository/common.mako

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
</script>
6666
</%def>
6767

68-
<%def name="render_dependencies_section( repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )">
68+
<%def name="render_dependencies_section( repository_dependencies_check_box, install_tool_dependencies_check_box, install_resolver_dependencies_check_box, containers_dict, revision_label=None, export=False )">
6969
<style type="text/css">
7070
#dependency_table{ table-layout:fixed;
7171
width:100%;
@@ -110,6 +110,14 @@
110110
</p>
111111
</div>
112112
</div>
113+
<div class="form-row">
114+
<label>Install resolvable dependencies (Currently conda-only) ?</label>
115+
${install_resolver_dependencies_check_box.get_html()}
116+
<div class="toolParamHelp" style="clear: both;">
117+
Un-check to skip automatic installation of tool dependencies.
118+
</div>
119+
</div>
120+
<div style="clear: both"></div>
113121
%if repository_dependencies_root_folder or missing_repository_dependencies_root_folder:
114122
%if repository_dependencies_check_box is not None:
115123
<div class="form-row">

templates/admin/tool_shed_repository/preview_repository.mako

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ function changeset_metadata() {
307307
}
308308
$("#tool_dependencies").show();
309309
$("#install_tool_dependencies").prop('disabled', false);
310+
$("#install_resolver_dependencies_checkbox").show();
310311
$("#install_tool_dependencies_checkbox").show();
311312
}
312313
else {
@@ -359,6 +360,7 @@ $(function() {
359360
form.preventDefault();
360361
var params = {};
361362
params.tool_shed_url = $("#tool_shed_url").val();
363+
params.install_resolver_dependencies = $("#install_resolver_dependencies").val();
362364
params.install_tool_dependencies = $("#install_tool_dependencies").val();
363365
params.install_repository_dependencies = $("#install_repository_dependencies").val();
364366
params.tool_panel_section = JSON.stringify(select_tps(params));
@@ -423,6 +425,10 @@ $(function() {
423425
</div>
424426
<div class="toolFormTitle">Contents of this repository at revision <strong id="current_changeset"></strong></div>
425427
<div class="toolFormBody">
428+
<p id="install_resolver_dependencies_checkbox">
429+
<input type="checkbox" checked id="install_resolver_dependencies" />
430+
<label for="install_resolver_dependencies">Install resolver dependencies</label>
431+
</p>
426432
<p id="install_repository_dependencies_checkbox">
427433
<input type="checkbox" checked id="install_repository_dependencies" />
428434
<label for="install_repository_dependencies">Install repository dependencies</label>

templates/admin/tool_shed_repository/reselect_tool_panel_section.mako

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<th bgcolor="#EBD9B2">Confirm dependency installation</th>
4343
</table>
4444
</div>
45-
${render_dependencies_section( install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
45+
${render_dependencies_section( install_resolver_dependencies_check_box, install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
4646
%endif
4747
%if shed_tool_conf_select_field:
4848
<div class="form-row">

templates/admin/tool_shed_repository/select_shed_tool_panel_config.mako

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
<th bgcolor="#EBD9B2">Confirm dependency installation</th>
9191
</table>
9292
</div>
93-
${render_dependencies_section( install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
93+
${render_dependencies_section( install_resolver_dependencies_check_box, install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
9494
<div style="clear: both"></div>
9595
%endif
9696
<div class="form-row">

templates/admin/tool_shed_repository/select_tool_panel_section.mako

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
<th bgcolor="#EBD9B2">Confirm dependency installation</th>
9191
</table>
9292
</div>
93-
${render_dependencies_section( install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
93+
${render_dependencies_section( install_resolver_dependencies_check_box, install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )}
9494
<div style="clear: both"></div>
9595
%endif
9696
%if shed_tool_conf_select_field:

0 commit comments

Comments
 (0)