mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #2061 from davebx/api_install_performance
Disable install button if changeset is installed.
This commit is contained in:
@@ -20,6 +20,8 @@ from tool_shed.util import workflow_util
|
||||
from tool_shed.util import tool_util
|
||||
from tool_shed.util import repository_util
|
||||
|
||||
from sqlalchemy import and_
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
|
||||
@@ -216,9 +218,19 @@ class ToolShedRepositoriesController( BaseAPIController ):
|
||||
Display a list of dictionaries containing information about installed tool shed repositories.
|
||||
"""
|
||||
# Example URL: http://localhost:8763/api/tool_shed_repositories
|
||||
clause_list = []
|
||||
if 'name' in kwd:
|
||||
clause_list.append( self.app.install_model.ToolShedRepository.table.c.name == kwd.get( 'name', None ) )
|
||||
if 'owner' in kwd:
|
||||
clause_list.append( self.app.install_model.ToolShedRepository.table.c.owner == kwd.get( 'owner', None ) )
|
||||
if 'changeset' in kwd:
|
||||
clause_list.append( self.app.install_model.ToolShedRepository.table.c.changeset_revision == kwd.get( 'changeset', None ) )
|
||||
tool_shed_repository_dicts = []
|
||||
for tool_shed_repository in trans.install_model.context.query( self.app.install_model.ToolShedRepository ) \
|
||||
.order_by( self.app.install_model.ToolShedRepository.table.c.name ):
|
||||
query = trans.install_model.context.query( self.app.install_model.ToolShedRepository ) \
|
||||
.order_by( self.app.install_model.ToolShedRepository.table.c.name )
|
||||
if len( clause_list ) > 0:
|
||||
query = query.filter( and_( *clause_list ) )
|
||||
for tool_shed_repository in query.all():
|
||||
tool_shed_repository_dict = \
|
||||
tool_shed_repository.to_dict( value_mapper=self.__get_value_mapper( trans, tool_shed_repository ) )
|
||||
tool_shed_repository_dict[ 'url' ] = web.url_for( controller='tool_shed_repositories',
|
||||
|
||||
@@ -238,10 +238,30 @@ function show_create_html() {
|
||||
$('#select_existing_' + clean_name).click(show_select_html);
|
||||
$('#cancel_' + clean_name).click(show_picker_button);
|
||||
}
|
||||
function check_if_installed(name, owner, changeset) {
|
||||
params = {name: name, owner: owner}
|
||||
$.get('${h.url_for(controller='api', action='tool_shed_repositories')}', params, function(data) {
|
||||
for (var index = 0; index < data.length; index++) {
|
||||
var repository = data[index];
|
||||
var installed = !repository.deleted && !repository.uninstalled;
|
||||
var changeset_match = repository.changeset_revision == changeset ||
|
||||
repository.installed_changeset_revision == changeset;
|
||||
if (repository.name == name && repository.owner == owner && installed && changeset_match) {
|
||||
$('#install_repository').prop('disabled', true);
|
||||
$('#install_repository').val('This revision is already installed');
|
||||
}
|
||||
else {
|
||||
$('#install_repository').prop('disabled', false);
|
||||
$('#install_repository').val('Install this revision');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function changeset_metadata() {
|
||||
metadata_key = $('#changeset').find("option:selected").text();
|
||||
$("#current_changeset").text(metadata_key);
|
||||
var repository_metadata = repository_information.metadata[metadata_key];
|
||||
var changeset = $('#changeset').find("option:selected").text();
|
||||
$("#current_changeset").text(changeset);
|
||||
var repository_metadata = repository_information.metadata[changeset];
|
||||
check_if_installed(repository_information.name, repository_information.owner, changeset.split(':')[1]);
|
||||
$(".repository_dependency_row").remove();
|
||||
$(".tool_dependency_row").remove();
|
||||
process_dependencies(repository_metadata);
|
||||
|
||||
Reference in New Issue
Block a user