Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attempted fix for server error on repo preview. #2079

Merged
merged 11 commits into from
Apr 20, 2016
14 changes: 7 additions & 7 deletions lib/galaxy/webapps/tool_shed/api/repository_revisions.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,20 +170,20 @@ def repository_dependencies( self, trans, id, **kwd ):
new_changeset_revision = suc.get_next_downloadable_changeset_revision( repository_dependency,
repo,
changeset_revision )
repository_dependency_repository_metadata = \
suc.get_repository_metadata_by_changeset_revision( trans.app,
repository_dependency_id,
new_changeset_revision )
if repository_dependency_repository_metadata is None:
if new_changeset_revision != changeset_revision:
repository_dependency_repository_metadata = \
suc.get_repository_metadata_by_changeset_revision( trans.app,
repository_dependency_id,
new_changeset_revision )
changeset_revision = new_changeset_revision
else:
decoded_repository_dependency_id = trans.security.decode_id( repository_dependency_id )
debug_msg = 'Cannot locate repository_metadata with id %d for repository dependency %s owned by %s ' % \
( decoded_repository_dependency_id, str( name ), str( owner ) )
debug_msg += 'using either of these changeset_revisions: %s, %s.' % \
( str( changeset_revision ), str( new_changeset_revision ) )
log.debug( debug_msg )
continue
else:
changeset_revision = new_changeset_revision
repository_dependency_metadata_dict = \
repository_dependency_repository_metadata.to_dict( view='element',
value_mapper=self.__get_value_mapper( trans ) )
Expand Down
12 changes: 6 additions & 6 deletions lib/galaxy/webapps/tool_shed/controllers/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -2415,9 +2415,9 @@ def next_installable_changeset_revision( self, trans, **kwd ):
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False )
# Get the next installable changeset_revision beyond the received changeset_revision.
changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
if changeset_revision:
return changeset_revision
next_changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
if next_changeset_revision and next_changeset_revision != changeset_revision:
return next_changeset_revision
return ''

@web.json
Expand Down Expand Up @@ -2865,7 +2865,7 @@ def sharable_repository_revision( self, trans, owner, name, changeset_revision )
# Get updates to the received changeset_revision if any exist.
repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False )
upper_bound_changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
if upper_bound_changeset_revision:
if upper_bound_changeset_revision and upper_bound_changeset_revision != changeset_revision:
changeset_revision = upper_bound_changeset_revision
repository_metadata = metadata_util.get_repository_metadata_by_repository_id_changeset_revision( trans.app,
repository_id,
Expand Down Expand Up @@ -2914,12 +2914,12 @@ def status_for_installed_repository( self, trans, **kwd ):
else:
next_installable_revision = suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
if repository_metadata is None:
if next_installable_revision:
if next_installable_revision and next_installable_revision != changeset_revision:
tool_shed_status_dict[ 'latest_installable_revision' ] = 'True'
else:
tool_shed_status_dict[ 'latest_installable_revision' ] = 'False'
else:
if next_installable_revision:
if next_installable_revision and next_installable_revision != changeset_revision:
tool_shed_status_dict[ 'latest_installable_revision' ] = 'False'
else:
tool_shed_status_dict[ 'latest_installable_revision' ] = 'True'
Expand Down
2 changes: 1 addition & 1 deletion lib/tool_shed/capsule/capsule_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ def get_dependent_downloadable_revisions( self, repository_metadata ):
suc.get_next_downloadable_changeset_revision( defined_repository,
defined_repo,
changeset_revision )
if updated_changeset_revision == rm_changeset_revision:
if updated_changeset_revision == rm_changeset_revision and updated_changeset_revision != changeset_revision:
dependent_downloadable_revisions.append( downloadable_revision )
return dependent_downloadable_revisions

Expand Down
9 changes: 5 additions & 4 deletions lib/tool_shed/dependencies/repository/relation_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,11 @@ def get_updated_changeset_revisions_for_repository_dependencies( self, key_rd_di
# The repository changeset_revision is no longer installable, so see if there's been an update.
repo = hg_util.get_repo_for_repository( self.app, repository=repository, repo_path=None, create=False )
changeset_revision = suc.get_next_downloadable_changeset_revision( repository, repo, rd_changeset_revision )
repository_metadata = \
metadata_util.get_repository_metadata_by_repository_id_changeset_revision( self.app,
repository_id,
changeset_revision )
if changeset_revision != rd_changeset_revision:
repository_metadata = \
metadata_util.get_repository_metadata_by_repository_id_changeset_revision( self.app,
repository_id,
changeset_revision )
if repository_metadata:
new_key_rd_dict = {}
new_key_rd_dict[ key ] = \
Expand Down
6 changes: 5 additions & 1 deletion lib/tool_shed/util/metadata_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ def get_dependencies_for_metadata_revision( app, metadata ):
dependencies = []
for shed, name, owner, changeset, prior, _ in metadata[ 'repository_dependencies' ]:
required_repository = suc.get_repository_by_name_and_owner( app, name, owner )
metadata_entry = suc.get_repository_metadata_by_changeset_revision( app, app.security.encode_id( required_repository.id ), changeset )
repo = hg_util.get_repo_for_repository( app, repository=required_repository, repo_path=None, create=False )
updated_changeset = suc.get_next_downloadable_changeset_revision( required_repository, repo, changeset )
if updated_changeset is None:
continue
metadata_entry = suc.get_repository_metadata_by_changeset_revision( app, app.security.encode_id( required_repository.id ), updated_changeset )
dependencies.append( metadata_entry )
return dependencies

Expand Down
2 changes: 1 addition & 1 deletion lib/tool_shed/util/repository_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ def get_repo_info_dict( app, user, repository_id, changeset_revision ):
# repository_suite_definition or tool_dependency_definition.
next_downloadable_changeset_revision = \
suc.get_next_downloadable_changeset_revision( repository, repo, changeset_revision )
if next_downloadable_changeset_revision:
if next_downloadable_changeset_revision and next_downloadable_changeset_revision != changeset_revision:
repository_metadata = suc.get_repository_metadata_by_changeset_revision( app,
repository_id,
next_downloadable_changeset_revision )
Expand Down
7 changes: 4 additions & 3 deletions lib/tool_shed/util/shed_util_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ def get_current_repository_metadata_for_changeset_revision( app, repository, cha
updated_changeset_revision = get_next_downloadable_changeset_revision( repository,
repo,
after_changeset_revision=changeset_revision )
if updated_changeset_revision:
if updated_changeset_revision and updated_changeset_revision != changeset_revision:
repository_metadata = get_repository_metadata_by_changeset_revision( app,
encoded_repository_id,
updated_changeset_revision )
Expand Down Expand Up @@ -391,13 +391,14 @@ def get_metadata_changeset_revisions( repository, repo ):
def get_next_downloadable_changeset_revision( repository, repo, after_changeset_revision ):
"""
Return the installable changeset_revision in the repository changelog after the changeset to which
after_changeset_revision refers. If there isn't one, return None.
after_changeset_revision refers. If there isn't one, return None. If there is only one installable
changeset, and that matches the requested revision, return it.
"""
changeset_revisions = [ revision[ 1 ] for revision in get_metadata_revisions( repository, repo ) ]
if len( changeset_revisions ) == 1:
changeset_revision = changeset_revisions[ 0 ]
if changeset_revision == after_changeset_revision:
return None
return after_changeset_revision
found_after_changeset_revision = False
for changeset in repo.changelog:
changeset_revision = str( repo.changectx( changeset ) )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ def test_0010_create_convert_repository( self ):
commit_message='Uploaded column maker 1.0.',
strings_displayed=[],
strings_not_displayed=[] )
# Add a dependency on BWA.
self.upload_file( repository,
filename='0540_files/convert_chars/tool_dependencies.xml',
filepath=None,
Expand All @@ -96,7 +97,7 @@ def test_0010_create_convert_repository( self ):
commit_message='Uploaded column maker 1.0.',
strings_displayed=[],
strings_not_displayed=[] )
# Visit the manage repository page for package_bwa_0_5_9_0100.
# Visit the manage repository page for convert_chars_0540.
self.display_manage_repository_page( repository, strings_displayed=[ repositories['bwa']['name'] ] )

def test_0015_create_column_repository( self ):
Expand Down Expand Up @@ -129,7 +130,7 @@ def test_0020_create_repository_dependency( self ):
valid_tools_only=True,
uncompress_file=True,
remove_repo_files_not_in_tar=False,
commit_message='Uploaded column maker 1.0.',
commit_message='Uploaded column maker 2.0.',
strings_displayed=[],
strings_not_displayed=[] )

Expand Down