mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge branch 'remove_toolshed_installation_grid' into dev
(post-prettier merge was simple to resolve)
This commit is contained in:
@@ -99,9 +99,7 @@ var AdminPanel = Backbone.View.extend({
|
||||
},
|
||||
{
|
||||
title: "Monitor installing repositories",
|
||||
url:
|
||||
"admin_toolshed/monitor_repository_installation?installing_repository_ids=" +
|
||||
self.settings.installing_repository_ids,
|
||||
url: "admin_toolshed/monitor_repository_installation",
|
||||
enabled: self.settings.installing_repository_ids
|
||||
},
|
||||
{
|
||||
|
||||
@@ -107,7 +107,7 @@ define(["mvc/toolshed/toolshed-model", "mvc/toolshed/util"], function(
|
||||
var repositories = iri_params.repositories;
|
||||
var new_route = "status/r/" + repositories.join("|");
|
||||
$.post(
|
||||
Galaxy.root + "admin_toolshed/manage_repositories",
|
||||
Galaxy.root + "admin_toolshed/install_repositories",
|
||||
iri_params,
|
||||
function(data) {
|
||||
console.log(
|
||||
|
||||
@@ -388,7 +388,7 @@ define(
|
||||
|
||||
doInstall: function(params) {
|
||||
var controller_url =
|
||||
Galaxy.root + "admin_toolshed/manage_repositories";
|
||||
Galaxy.root + "admin_toolshed/install_repositories";
|
||||
var repositories = params.repositories;
|
||||
var new_route = "status/r/" + repositories.join("|");
|
||||
$.post(controller_url, params, function(data) {
|
||||
|
||||
@@ -44,8 +44,6 @@ log = logging.getLogger(__name__)
|
||||
class AdminToolshed(AdminGalaxy):
|
||||
|
||||
installed_repository_grid = admin_toolshed_grids.InstalledRepositoryGrid()
|
||||
repository_installation_grid = admin_toolshed_grids.RepositoryInstallationGrid()
|
||||
tool_dependency_grid = admin_toolshed_grids.ToolDependencyGrid()
|
||||
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
@@ -560,72 +558,28 @@ class AdminToolshed(AdminGalaxy):
|
||||
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
def manage_repositories(self, trans, **kwd):
|
||||
message = escape(kwd.get('message', ''))
|
||||
api_installation = util.asbool(kwd.get('api', 'false'))
|
||||
if api_installation:
|
||||
tsr_ids = json.loads(kwd.get('tool_shed_repository_ids', '[]'))
|
||||
kwd['tool_shed_repository_ids'] = tsr_ids
|
||||
tsridslist = common_util.get_tool_shed_repository_ids(**kwd)
|
||||
else:
|
||||
tsridslist = common_util.get_tool_shed_repository_ids(**kwd)
|
||||
if 'operation' in kwd:
|
||||
operation = kwd['operation'].lower()
|
||||
if not tsridslist:
|
||||
message = 'Select at least 1 tool shed repository to %s.' % operation
|
||||
kwd['message'] = message
|
||||
kwd['status'] = 'error'
|
||||
del kwd['operation']
|
||||
return trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='manage_repositories',
|
||||
**kwd))
|
||||
if operation == 'browse':
|
||||
return trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='browse_repository',
|
||||
**kwd))
|
||||
elif operation == 'uninstall':
|
||||
# TODO: I believe this block should be removed, but make sure..
|
||||
repositories_for_uninstallation = []
|
||||
for repository_id in tsridslist:
|
||||
repository = trans.install_model.context.query(trans.install_model.ToolShedRepository) \
|
||||
.get(trans.security.decode_id(repository_id))
|
||||
if repository.status in [trans.install_model.ToolShedRepository.installation_status.INSTALLED,
|
||||
trans.install_model.ToolShedRepository.installation_status.ERROR]:
|
||||
repositories_for_uninstallation.append(repository)
|
||||
if repositories_for_uninstallation:
|
||||
return trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='uninstall_repositories',
|
||||
**kwd))
|
||||
else:
|
||||
kwd['message'] = 'All selected tool shed repositories are already uninstalled.'
|
||||
kwd['status'] = 'error'
|
||||
elif operation == "install":
|
||||
irm = install_manager.InstallRepositoryManager(trans.app)
|
||||
reinstalling = util.string_as_bool(kwd.get('reinstalling', False))
|
||||
encoded_kwd = kwd['encoded_kwd']
|
||||
decoded_kwd = encoding_util.tool_shed_decode(encoded_kwd)
|
||||
install_resolver_dependencies = CheckboxField.is_checked(decoded_kwd.get('install_resolver_dependencies', ''))
|
||||
install_tool_dependencies = CheckboxField.is_checked(decoded_kwd.get('install_tool_dependencies', ''))
|
||||
tsr_ids = decoded_kwd['tool_shed_repository_ids']
|
||||
decoded_kwd['install_resolver_dependencies'] = install_resolver_dependencies
|
||||
decoded_kwd['install_tool_dependencies'] = install_tool_dependencies
|
||||
try:
|
||||
tool_shed_repositories = irm.install_repositories(
|
||||
tsr_ids=tsr_ids,
|
||||
decoded_kwd=decoded_kwd,
|
||||
reinstalling=reinstalling,
|
||||
)
|
||||
tsr_ids_for_monitoring = [trans.security.encode_id(tsr.id) for tsr in tool_shed_repositories]
|
||||
if api_installation:
|
||||
return json.dumps(tsr_ids_for_monitoring)
|
||||
else:
|
||||
trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='monitor_repository_installation',
|
||||
tool_shed_repository_ids=tsr_ids_for_monitoring))
|
||||
except install_manager.RepositoriesInstalledException as e:
|
||||
kwd['message'] = e.message
|
||||
kwd['status'] = 'error'
|
||||
return self.repository_installation_grid(trans, **kwd)
|
||||
def install_repositories(self, trans, **kwd):
|
||||
reinstalling = util.string_as_bool(kwd.get('reinstalling', False))
|
||||
encoded_kwd = kwd.get('encoded_kwd')
|
||||
decoded_kwd = encoding_util.tool_shed_decode(encoded_kwd) if encoded_kwd else {}
|
||||
install_resolver_dependencies = CheckboxField.is_checked(decoded_kwd.get('install_resolver_dependencies', ''))
|
||||
install_tool_dependencies = CheckboxField.is_checked(decoded_kwd.get('install_tool_dependencies', ''))
|
||||
decoded_kwd['install_resolver_dependencies'] = install_resolver_dependencies
|
||||
decoded_kwd['install_tool_dependencies'] = install_tool_dependencies
|
||||
tsr_ids = decoded_kwd.get('tool_shed_repository_ids')
|
||||
if not tsr_ids:
|
||||
return self.message_exception(trans, 'Repository ids missing.')
|
||||
irm = install_manager.InstallRepositoryManager(trans.app)
|
||||
try:
|
||||
tool_shed_repositories = irm.install_repositories(
|
||||
tsr_ids=tsr_ids,
|
||||
decoded_kwd=decoded_kwd,
|
||||
reinstalling=reinstalling,
|
||||
)
|
||||
tsr_ids_for_monitoring = [trans.security.encode_id(tsr.id) for tsr in tool_shed_repositories]
|
||||
return json.dumps(tsr_ids_for_monitoring)
|
||||
except install_manager.RepositoriesInstalledException as e:
|
||||
return self.message_exception(trans, e.message)
|
||||
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
@@ -784,15 +738,6 @@ class AdminToolshed(AdminGalaxy):
|
||||
status = kwd.get('status', 'done')
|
||||
tool_dependency_ids = tool_dependency_util.get_tool_dependency_ids(as_string=False, **kwd)
|
||||
repository_id = kwd.get('repository_id', None)
|
||||
if tool_dependency_ids:
|
||||
# We need a tool_shed_repository, so get it from one of the tool_dependencies.
|
||||
tool_dependency = tool_dependency_util.get_tool_dependency(trans.app, tool_dependency_ids[0])
|
||||
tool_shed_repository = tool_dependency.tool_shed_repository
|
||||
else:
|
||||
# The user must be on the manage_repository_tool_dependencies page and clicked the button to either install or uninstall a
|
||||
# tool dependency, but they didn't check any of the available tool dependencies on which to perform the action.
|
||||
tool_shed_repository = repository_util.get_tool_shed_repository_by_id(trans.app, repository_id)
|
||||
self.tool_dependency_grid.title = "Tool shed repository '%s' tool dependencies" % escape(tool_shed_repository.name)
|
||||
if 'operation' in kwd:
|
||||
operation = kwd['operation'].lower()
|
||||
if not tool_dependency_ids:
|
||||
@@ -828,9 +773,6 @@ class AdminToolshed(AdminGalaxy):
|
||||
message += ' and restart your Galaxy server to install tool dependencies.'
|
||||
kwd['message'] = message
|
||||
kwd['status'] = 'error'
|
||||
# Redirect if no tool dependencies are in the process of being installed.
|
||||
if tool_shed_repository.tool_dependencies_being_installed:
|
||||
return self.tool_dependency_grid(trans, **kwd)
|
||||
return trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='manage_repository_tool_dependencies',
|
||||
tool_dependency_ids=tool_dependency_ids,
|
||||
@@ -841,11 +783,23 @@ class AdminToolshed(AdminGalaxy):
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
def monitor_repository_installation(self, trans, **kwd):
|
||||
tsridslist = common_util.get_tool_shed_repository_ids(**kwd)
|
||||
if not tsridslist:
|
||||
tsridslist = repository_util.get_ids_of_tool_shed_repositories_being_installed(trans.app, as_string=False)
|
||||
kwd['tool_shed_repository_ids'] = tsridslist
|
||||
return self.repository_installation_grid(trans, **kwd)
|
||||
tsr_ids = common_util.get_tool_shed_repository_ids(**kwd)
|
||||
if not tsr_ids:
|
||||
tsr_ids = repository_util.get_ids_of_tool_shed_repositories_being_installed(trans.app, as_string=False)
|
||||
tsr_ids = [trans.security.decode_id(tsr_id) for tsr_id in tsr_ids]
|
||||
tool_shed_repositories = []
|
||||
for tsr_id in tsr_ids:
|
||||
tsr = trans.install_model.context.query(trans.install_model.ToolShedRepository).get(tsr_id)
|
||||
tool_shed_repositories.append(tsr)
|
||||
clause_list = []
|
||||
for tsr_id in tsr_ids:
|
||||
clause_list.append(trans.install_model.ToolShedRepository.table.c.id == tsr_id)
|
||||
query = trans.install_model.context.current.query(trans.install_model.ToolShedRepository).filter(or_(*clause_list))
|
||||
return trans.fill_template('admin/tool_shed_repository/monitor_repository_installation.mako',
|
||||
tool_shed_repositories=tool_shed_repositories,
|
||||
query=query,
|
||||
message=escape(kwd.get('message', '')),
|
||||
status=kwd.get('status'))
|
||||
|
||||
@web.json
|
||||
@web.require_admin
|
||||
@@ -992,20 +946,19 @@ class AdminToolshed(AdminGalaxy):
|
||||
tool_panel_section_keys=tool_panel_section_keys,
|
||||
tool_path=tool_path,
|
||||
tool_shed_url=tool_shed_url)
|
||||
|
||||
encoded_kwd, query, tool_shed_repositories, encoded_repository_ids = \
|
||||
install_repository_manager.initiate_repository_installation(installation_dict)
|
||||
return trans.fill_template('admin/tool_shed_repository/initiate_repository_installation.mako',
|
||||
return trans.fill_template('admin/tool_shed_repository/monitor_repository_installation.mako',
|
||||
encoded_kwd=encoded_kwd,
|
||||
query=query,
|
||||
tool_shed_repositories=tool_shed_repositories,
|
||||
initiate_repository_installation_ids=encoded_repository_ids,
|
||||
reinstalling=False)
|
||||
else:
|
||||
kwd['message'] = message
|
||||
kwd['message'] = message if message else 'Repository has already been installed.'
|
||||
kwd['status'] = status
|
||||
return trans.response.send_redirect(web.url_for(controller='admin_toolshed',
|
||||
action='manage_repositories',
|
||||
action='monitor_repository_installation',
|
||||
**kwd))
|
||||
shed_tool_conf_select_field = tool_util.build_shed_tool_conf_select_field(trans.app)
|
||||
tool_path = suc.get_tool_path_by_shed_tool_conf_filename(trans.app, shed_tool_conf)
|
||||
@@ -1311,7 +1264,7 @@ class AdminToolshed(AdminGalaxy):
|
||||
clause_list.append(trans.install_model.ToolShedRepository.table.c.id == tsr_id)
|
||||
query = trans.install_model.context.current.query(trans.install_model.ToolShedRepository) \
|
||||
.filter(or_(*clause_list))
|
||||
return trans.fill_template('admin/tool_shed_repository/initiate_repository_installation.mako',
|
||||
return trans.fill_template('admin/tool_shed_repository/monitor_repository_installation.mako',
|
||||
encoded_kwd=encoded_kwd,
|
||||
query=query,
|
||||
tool_shed_repositories=tool_shed_repositories,
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import logging
|
||||
|
||||
from sqlalchemy import false, or_
|
||||
|
||||
from galaxy import util
|
||||
from galaxy.model import tool_shed_install
|
||||
from galaxy.web import url_for
|
||||
from galaxy.web.framework.helpers import grids, iff
|
||||
from tool_shed.util import repository_util, tool_dependency_util
|
||||
from tool_shed.util import repository_util
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@@ -236,192 +234,3 @@ class InstalledRepositoryGrid(grids.Grid):
|
||||
legend_str += '%s This repository contains exported workflows<br/>' % generate_includes_workflows_img_str()
|
||||
legend_str += '%s Unable to get information from the Tool Shed<br/>' % generate_unknown_img_str()
|
||||
return legend_str
|
||||
|
||||
|
||||
class RepositoryInstallationGrid(grids.Grid):
|
||||
|
||||
class NameColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_shed_repository):
|
||||
return tool_shed_repository.name
|
||||
|
||||
class DescriptionColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_shed_repository):
|
||||
return tool_shed_repository.description
|
||||
|
||||
class OwnerColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_shed_repository):
|
||||
return tool_shed_repository.owner
|
||||
|
||||
class RevisionColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_shed_repository):
|
||||
return tool_shed_repository.changeset_revision
|
||||
|
||||
class StatusColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_shed_repository):
|
||||
status_label = tool_shed_repository.status
|
||||
if tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.CLONING,
|
||||
trans.install_model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS,
|
||||
trans.install_model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES,
|
||||
trans.install_model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES]:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.INSTALLING
|
||||
elif tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.NEW,
|
||||
trans.install_model.ToolShedRepository.installation_status.UNINSTALLED]:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.UNINSTALLED
|
||||
elif tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.ERROR]:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.ERROR
|
||||
elif tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.DEACTIVATED]:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.WARNING
|
||||
elif tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.INSTALLED]:
|
||||
if tool_shed_repository.missing_tool_dependencies or tool_shed_repository.missing_repository_dependencies:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.WARNING
|
||||
if tool_shed_repository.missing_tool_dependencies and not tool_shed_repository.missing_repository_dependencies:
|
||||
status_label = '%s, missing tool dependencies' % status_label
|
||||
if tool_shed_repository.missing_repository_dependencies and not tool_shed_repository.missing_tool_dependencies:
|
||||
status_label = '%s, missing repository dependencies' % status_label
|
||||
if tool_shed_repository.missing_tool_dependencies and tool_shed_repository.missing_repository_dependencies:
|
||||
status_label = '%s, missing both tool and repository dependencies' % status_label
|
||||
if not tool_shed_repository.missing_tool_dependencies and not tool_shed_repository.missing_repository_dependencies:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.OK
|
||||
else:
|
||||
bgcolor = trans.install_model.ToolShedRepository.states.ERROR
|
||||
rval = '<div class="count-box state-color-%s" id="RepositoryStatus-%s">%s</div>' % \
|
||||
(bgcolor, trans.security.encode_id(tool_shed_repository.id), status_label)
|
||||
return rval
|
||||
|
||||
title = "Monitor installing tool shed repositories"
|
||||
template = "admin/tool_shed_repository/repository_installation_grid.mako"
|
||||
model_class = tool_shed_install.ToolShedRepository
|
||||
default_sort_key = "-create_time"
|
||||
num_rows_per_page = 50
|
||||
preserve_state = True
|
||||
use_paging = False
|
||||
columns = [
|
||||
NameColumn("Name",
|
||||
link=(lambda item: iff(item.status in
|
||||
[tool_shed_install.ToolShedRepository.installation_status.NEW,
|
||||
tool_shed_install.ToolShedRepository.installation_status.CLONING,
|
||||
tool_shed_install.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS,
|
||||
tool_shed_install.ToolShedRepository.installation_status.INSTALLING_REPOSITORY_DEPENDENCIES,
|
||||
tool_shed_install.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES,
|
||||
tool_shed_install.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES,
|
||||
tool_shed_install.ToolShedRepository.installation_status.UNINSTALLED],
|
||||
None, dict(action="manage_repository", id=item.id))),
|
||||
filterable="advanced"),
|
||||
DescriptionColumn("Description",
|
||||
filterable="advanced"),
|
||||
OwnerColumn("Owner",
|
||||
filterable="advanced"),
|
||||
RevisionColumn("Revision",
|
||||
filterable="advanced"),
|
||||
StatusColumn("Installation Status",
|
||||
filterable="advanced",
|
||||
label_id_prefix="RepositoryStatus-")
|
||||
]
|
||||
operations = []
|
||||
|
||||
def build_initial_query(self, trans, **kwd):
|
||||
clause_list = []
|
||||
tool_shed_repository_ids = util.listify(kwd.get('tool_shed_repository_ids', None))
|
||||
if tool_shed_repository_ids:
|
||||
for tool_shed_repository_id in tool_shed_repository_ids:
|
||||
clause_list.append(self.model_class.table.c.id == trans.security.decode_id(tool_shed_repository_id))
|
||||
if clause_list:
|
||||
return trans.install_model.context.query(self.model_class) \
|
||||
.filter(or_(*clause_list))
|
||||
for tool_shed_repository in trans.install_model.context.query(self.model_class) \
|
||||
.filter(self.model_class.table.c.deleted == false()):
|
||||
if tool_shed_repository.status in [trans.install_model.ToolShedRepository.installation_status.NEW,
|
||||
trans.install_model.ToolShedRepository.installation_status.CLONING,
|
||||
trans.install_model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS,
|
||||
trans.install_model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES,
|
||||
trans.install_model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES]:
|
||||
clause_list.append(self.model_class.table.c.id == tool_shed_repository.id)
|
||||
if clause_list:
|
||||
return trans.install_model.context.query(self.model_class) \
|
||||
.filter(or_(*clause_list))
|
||||
return trans.install_model.context.query(self.model_class) \
|
||||
.filter(self.model_class.table.c.status == trans.install_model.ToolShedRepository.installation_status.NEW)
|
||||
|
||||
def apply_query_filter(self, trans, query, **kwd):
|
||||
tool_shed_repository_id = kwd.get('tool_shed_repository_id', None)
|
||||
if tool_shed_repository_id:
|
||||
return query.filter_by(tool_shed_repository_id=trans.security.decode_id(tool_shed_repository_id))
|
||||
return query
|
||||
|
||||
|
||||
class ToolDependencyGrid(grids.Grid):
|
||||
|
||||
class NameColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_dependency):
|
||||
return tool_dependency.name
|
||||
|
||||
class VersionColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_dependency):
|
||||
return tool_dependency.version
|
||||
|
||||
class TypeColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_dependency):
|
||||
return tool_dependency.type
|
||||
|
||||
class StatusColumn(grids.TextColumn):
|
||||
|
||||
def get_value(self, trans, grid, tool_dependency):
|
||||
if tool_dependency.status in [trans.install_model.ToolDependency.installation_status.INSTALLING]:
|
||||
bgcolor = trans.install_model.ToolDependency.states.INSTALLING
|
||||
elif tool_dependency.status in [trans.install_model.ToolDependency.installation_status.NEVER_INSTALLED,
|
||||
trans.install_model.ToolDependency.installation_status.UNINSTALLED]:
|
||||
bgcolor = trans.install_model.ToolDependency.states.UNINSTALLED
|
||||
elif tool_dependency.status in [trans.install_model.ToolDependency.installation_status.ERROR]:
|
||||
bgcolor = trans.install_model.ToolDependency.states.ERROR
|
||||
elif tool_dependency.status in [trans.install_model.ToolDependency.installation_status.INSTALLED]:
|
||||
bgcolor = trans.install_model.ToolDependency.states.OK
|
||||
rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">%s</div>' % \
|
||||
(bgcolor, trans.security.encode_id(tool_dependency.id), tool_dependency.status)
|
||||
return rval
|
||||
|
||||
title = "Tool Dependencies"
|
||||
template = "admin/tool_shed_repository/tool_dependencies_grid.mako"
|
||||
model_class = tool_shed_install.ToolDependency
|
||||
default_sort_key = "-create_time"
|
||||
num_rows_per_page = 50
|
||||
preserve_state = True
|
||||
use_paging = False
|
||||
columns = [
|
||||
NameColumn("Name",
|
||||
link=(lambda item: iff(item.status in [tool_shed_install.ToolDependency.installation_status.NEVER_INSTALLED,
|
||||
tool_shed_install.ToolDependency.installation_status.INSTALLING,
|
||||
tool_shed_install.ToolDependency.installation_status.UNINSTALLED],
|
||||
None,
|
||||
dict(action="manage_tool_dependencies", operation='browse', id=item.id))),
|
||||
filterable="advanced"),
|
||||
VersionColumn("Version",
|
||||
filterable="advanced"),
|
||||
TypeColumn("Type",
|
||||
filterable="advanced"),
|
||||
StatusColumn("Installation Status",
|
||||
filterable="advanced"),
|
||||
]
|
||||
|
||||
def build_initial_query(self, trans, **kwd):
|
||||
tool_dependency_ids = tool_dependency_util.get_tool_dependency_ids(as_string=False, **kwd)
|
||||
if tool_dependency_ids:
|
||||
clause_list = []
|
||||
for tool_dependency_id in tool_dependency_ids:
|
||||
clause_list.append(self.model_class.table.c.id == trans.security.decode_id(tool_dependency_id))
|
||||
return trans.install_model.context.query(self.model_class) \
|
||||
.filter(or_(*clause_list))
|
||||
return trans.install_model.context.query(self.model_class)
|
||||
|
||||
def apply_query_filter(self, trans, query, **kwd):
|
||||
tool_dependency_id = kwd.get('tool_dependency_id', None)
|
||||
if tool_dependency_id:
|
||||
return query.filter_by(tool_dependency_id=trans.security.decode_id(tool_dependency_id))
|
||||
return query
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
"use strict";define(["mvc/toolshed/toolshed-model","mvc/toolshed/util"],function(e,t){return{RepoQueueView:Backbone.View.extend({el:"#center",defaults:[{}],initialize:function(t){var o=this;this.model=new e.RepoQueue,this.listenTo(this.model,"sync",this.render),this.model.fetch(),o.render()},render:function(e){var o=this,i=o.templateRepoQueue,r=o.model.models;o.$el.html(i({title:"Repository Installation Queue",repositories:r,queue:t.queueLength()})),$("#center").css("overflow","auto"),o.bindEvents()},bindEvents:function(){var e=this;$(".install_one").on("click",function(){var t=e.loadFromQueue($(this).attr("data-repokey"));e.installFromQueue(t,$(this).attr("data-repokey"))}),$(".remove_one").on("click",function(){var e=$(this).attr("data-repokey"),t=JSON.parse(localStorage.repositories);if(t.hasOwnProperty(e)){var o=t[e].repository.id;delete t[e],$("#queued_repository_"+o).remove()}localStorage.repositories=JSON.stringify(t)}),$("#clear_queue").on("click",function(){localStorage.repositories="{}"}),$("#from_workflow").on("click",function(){Backbone.history.navigate("workflows",{trigger:!0,replace:!0})})},installFromQueue:function(e,o){var i=Object();i.install_tool_dependencies=e.install_tool_dependencies,i.install_repository_dependencies=e.install_repository_dependencies,i.install_resolver_dependencies=e.install_resolver_dependencies,i.tool_panel_section=e.tool_panel_section,i.shed_tool_conf=e.shed_tool_conf,i.repositories=JSON.stringify([[e.repository.id,e.changeset_revision]]),i.tool_shed_repository_ids=JSON.stringify([e.repository.id]),i.tool_shed_url=o.split("|")[0],i.changeset=e.changeset_revision;var r=Galaxy.root+"api/tool_shed_repositories/install?async=True";if($("#queued_repository_"+e.repository.id).remove(),localStorage.repositories){void 0===o&&(o=t.queueKey(e));var s=JSON.parse(localStorage.repositories);s.hasOwnProperty(o)&&(delete s[o],localStorage.repositories=JSON.stringify(s))}$.post(r,i,function(e){var t=JSON.parse(e),o="status/r/"+t.repositories.join("|");$.post(Galaxy.root+"admin_toolshed/manage_repositories",t,function(e){console.log("Initializing repository installation succeeded")}),Backbone.history.navigate(o,{trigger:!0,replace:!0})})},loadFromQueue:function(e){var t=JSON.parse(localStorage.repositories);if(t.hasOwnProperty(e))return t[e]},reDraw:function(e){this.$el.empty(),this.initialize(e),this.model.fetch(),this.render(e)},templateRepoQueue:_.template(['<div class="unified-panel-header" id="panel_header" unselectable="on">','<div class="unified-panel-header-inner"><%= title %></div>','<div class="unified-panel-header-inner" style="position: absolute; right: 5px; top: 0px;"><a href="#/queue">Repository Queue (<%= queue %>)</a></div>',"</div>",'<div class="tab-pane" id="panel_header" id="repository_queue">','<table id="queued_repositories" class="grid" border="0" cellpadding="2" cellspacing="2" width="100%">','<thead id="grid-table-header">',"<tr>",'<th class="datasetRow">Name</th>','<th class="datasetRow">Owner</th>','<th class="datasetRow">Revision</th>','<th class="datasetRow">ToolShed</th>','<th class="datasetRow">Install</th>','<th class="datasetRow"><input class="btn btn-primary" type="submit" id="clear_queue" name="clear_queue" value="Clear queue" /></th>',"</tr>","</thead>","<tbody>","<% _.each(repositories, function(repository) { %>",'<tr id="queued_repository_<%= repository.get("id") %>">','<td class="datasetRow"><%= repository.get("repository").name %></td>','<td class="datasetRow"><%= repository.get("repository").owner %></td>','<td class="datasetRow"><%= repository.get("changeset_revision") %></td>','<td class="datasetRow"><%= repository.get("tool_shed_url") %></td>','<td class="datasetRow">','<input class="btn btn-primary install_one" data-repokey="<%= repository.get("queue_key") %>" type="submit" id="install_repository_<%= repository.get("id") %>" name="install_repository" value="Install now" />',"</td>",'<td class="datasetRow">','<input class="btn btn-primary remove_one" data-repokey="<%= repository.get("queue_key") %>" type="submit" id="unqueue_repository_<%= repository.get("id") %>" name="unqueue_repository" value="Remove from queue" />',"</td>","</tr>","<% }); %>","</tbody>","</table>",'<input type="button" class="btn btn-primary" id="from_workflow" value="Add from workflow" />',"</div>"].join(""))})}});
|
||||
"use strict";define(["mvc/toolshed/toolshed-model","mvc/toolshed/util"],function(e,t){return{RepoQueueView:Backbone.View.extend({el:"#center",defaults:[{}],initialize:function(t){var o=this;this.model=new e.RepoQueue,this.listenTo(this.model,"sync",this.render),this.model.fetch(),o.render()},render:function(e){var o=this,i=o.templateRepoQueue,s=o.model.models;o.$el.html(i({title:"Repository Installation Queue",repositories:s,queue:t.queueLength()})),$("#center").css("overflow","auto"),o.bindEvents()},bindEvents:function(){var e=this;$(".install_one").on("click",function(){var t=e.loadFromQueue($(this).attr("data-repokey"));e.installFromQueue(t,$(this).attr("data-repokey"))}),$(".remove_one").on("click",function(){var e=$(this).attr("data-repokey"),t=JSON.parse(localStorage.repositories);if(t.hasOwnProperty(e)){var o=t[e].repository.id;delete t[e],$("#queued_repository_"+o).remove()}localStorage.repositories=JSON.stringify(t)}),$("#clear_queue").on("click",function(){localStorage.repositories="{}"}),$("#from_workflow").on("click",function(){Backbone.history.navigate("workflows",{trigger:!0,replace:!0})})},installFromQueue:function(e,o){var i=Object();i.install_tool_dependencies=e.install_tool_dependencies,i.install_repository_dependencies=e.install_repository_dependencies,i.install_resolver_dependencies=e.install_resolver_dependencies,i.tool_panel_section=e.tool_panel_section,i.shed_tool_conf=e.shed_tool_conf,i.repositories=JSON.stringify([[e.repository.id,e.changeset_revision]]),i.tool_shed_repository_ids=JSON.stringify([e.repository.id]),i.tool_shed_url=o.split("|")[0],i.changeset=e.changeset_revision;var s=Galaxy.root+"api/tool_shed_repositories/install?async=True";if($("#queued_repository_"+e.repository.id).remove(),localStorage.repositories){void 0===o&&(o=t.queueKey(e));var r=JSON.parse(localStorage.repositories);r.hasOwnProperty(o)&&(delete r[o],localStorage.repositories=JSON.stringify(r))}$.post(s,i,function(e){var t=JSON.parse(e),o="status/r/"+t.repositories.join("|");$.post(Galaxy.root+"admin_toolshed/install_repositories",t,function(e){console.log("Initializing repository installation succeeded")}),Backbone.history.navigate(o,{trigger:!0,replace:!0})})},loadFromQueue:function(e){var t=JSON.parse(localStorage.repositories);if(t.hasOwnProperty(e))return t[e]},reDraw:function(e){this.$el.empty(),this.initialize(e),this.model.fetch(),this.render(e)},templateRepoQueue:_.template(['<div class="unified-panel-header" id="panel_header" unselectable="on">','<div class="unified-panel-header-inner"><%= title %></div>','<div class="unified-panel-header-inner" style="position: absolute; right: 5px; top: 0px;"><a href="#/queue">Repository Queue (<%= queue %>)</a></div>',"</div>",'<div class="tab-pane" id="panel_header" id="repository_queue">','<table id="queued_repositories" class="grid" border="0" cellpadding="2" cellspacing="2" width="100%">','<thead id="grid-table-header">',"<tr>",'<th class="datasetRow">Name</th>','<th class="datasetRow">Owner</th>','<th class="datasetRow">Revision</th>','<th class="datasetRow">ToolShed</th>','<th class="datasetRow">Install</th>','<th class="datasetRow"><input class="btn btn-primary" type="submit" id="clear_queue" name="clear_queue" value="Clear queue" /></th>',"</tr>","</thead>","<tbody>","<% _.each(repositories, function(repository) { %>",'<tr id="queued_repository_<%= repository.get("id") %>">','<td class="datasetRow"><%= repository.get("repository").name %></td>','<td class="datasetRow"><%= repository.get("repository").owner %></td>','<td class="datasetRow"><%= repository.get("changeset_revision") %></td>','<td class="datasetRow"><%= repository.get("tool_shed_url") %></td>','<td class="datasetRow">','<input class="btn btn-primary install_one" data-repokey="<%= repository.get("queue_key") %>" type="submit" id="install_repository_<%= repository.get("id") %>" name="install_repository" value="Install now" />',"</td>",'<td class="datasetRow">','<input class="btn btn-primary remove_one" data-repokey="<%= repository.get("queue_key") %>" type="submit" id="unqueue_repository_<%= repository.get("id") %>" name="unqueue_repository" value="Remove from queue" />',"</td>","</tr>","<% }); %>","</tbody>","</table>",'<input type="button" class="btn btn-primary" id="from_workflow" value="Add from workflow" />',"</div>"].join(""))})}});
|
||||
//# sourceMappingURL=../../../maps/mvc/toolshed/repository-queue-view.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
+15
-6
@@ -1,4 +1,5 @@
|
||||
<%inherit file="/base.mako"/>
|
||||
<%namespace file="/message.mako" import="render_msg" />
|
||||
<%namespace file="/admin/tool_shed_repository/common.mako" import="*" />
|
||||
|
||||
<%def name="javascripts()">
|
||||
@@ -10,24 +11,30 @@
|
||||
|
||||
<%def name="repository_installation_javascripts()">
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function( ){
|
||||
initiate_repository_installation( "${initiate_repository_installation_ids}", "${encoded_kwd}", "${reinstalling}" );
|
||||
});
|
||||
%if context.get("initiate_repository_installation_ids"):
|
||||
$(document).ready(function( ){
|
||||
initiate_repository_installation( "${initiate_repository_installation_ids}", "${encoded_kwd}", "${reinstalling}" );
|
||||
});
|
||||
%endif
|
||||
var initiate_repository_installation = function ( iri_ids, encoded_kwd, reinstalling ) {
|
||||
// Make ajax call
|
||||
$.ajax( {
|
||||
type: "POST",
|
||||
url: "${h.url_for( controller='admin_toolshed', action='manage_repositories' )}",
|
||||
url: "${h.url_for( controller='admin_toolshed', action='install_repositories' )}",
|
||||
dataType: "html",
|
||||
data: { operation: "install", tool_shed_repository_ids: iri_ids, encoded_kwd: encoded_kwd, reinstalling: reinstalling },
|
||||
data: { tool_shed_repository_ids: iri_ids, encoded_kwd: encoded_kwd, reinstalling: reinstalling },
|
||||
success : function ( data ) {
|
||||
console.log( "Initializing repository installation succeeded" );
|
||||
},
|
||||
}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</%def>
|
||||
|
||||
%if context.get("message"):
|
||||
${render_msg( message, status )}
|
||||
%endif
|
||||
|
||||
%if tool_shed_repositories:
|
||||
<div class="toolForm">
|
||||
<div class="toolFormTitle">Monitor installing tool shed repositories</div>
|
||||
@@ -68,4 +75,6 @@
|
||||
<br clear="left"/>
|
||||
</div>
|
||||
</div>
|
||||
%else:
|
||||
${render_msg("There is no repository being installed.", "info")}
|
||||
%endif
|
||||
@@ -1,8 +0,0 @@
|
||||
<%inherit file="/grid_base.mako"/>
|
||||
<%namespace file="/admin/tool_shed_repository/common.mako" import="*" />
|
||||
|
||||
<%def name="javascripts()">
|
||||
${parent.javascripts()}
|
||||
${repository_installation_status_updater()}
|
||||
${repository_installation_updater()}
|
||||
</%def>
|
||||
@@ -1,8 +0,0 @@
|
||||
<%inherit file="/grid_base.mako"/>
|
||||
<%namespace file="/admin/tool_shed_repository/common.mako" import="*" />
|
||||
|
||||
<%def name="javascripts()">
|
||||
${parent.javascripts()}
|
||||
${dependency_status_updater()}
|
||||
${tool_dependency_installation_updater()}
|
||||
</%def>
|
||||
@@ -921,7 +921,7 @@ class ShedTwillTestCase(TwillTestCase):
|
||||
repository_ids = re.sub('[^a-fA-F0-9,]+', '', repository_ids)
|
||||
encoded_kwd = install_parameters.group(2)
|
||||
reinstalling = install_parameters.group(3)
|
||||
url = '/admin_toolshed/manage_repositories?operation=install&tool_shed_repository_ids=%s&encoded_kwd=%s&reinstalling=%s' % \
|
||||
url = '/admin_toolshed/install_repositories?tool_shed_repository_ids=%s&encoded_kwd=%s&reinstalling=%s' % \
|
||||
(','.join(galaxy.util.listify(repository_ids)), encoded_kwd, reinstalling)
|
||||
self.visit_galaxy_url(url)
|
||||
return galaxy.util.listify(repository_ids)
|
||||
|
||||
Reference in New Issue
Block a user