def get_latest_downloadable_repository_metadata(trans, repository): """ Return the latest downloadable repository_metadata record for the received repository. This will return repositories of type unrestricted as well as types repository_suite_definition and tool_dependency_definition. """ encoded_repository_id = trans.security.encode_id(repository.id) repo = hg_util.get_repo_for_repository(trans.app, repository=repository, repo_path=None, create=False) tip_ctx = str(repo.changectx(repo.changelog.tip())) repository_metadata = None try: repository_metadata = metadata_util.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, tip_ctx) if repository_metadata is not None and repository_metadata.downloadable: return repository_metadata return None except Exception: latest_downloadable_revision = metadata_util.get_previous_metadata_changeset_revision( repository, repo, tip_ctx, downloadable=True) if latest_downloadable_revision == hg_util.INITIAL_CHANGELOG_HASH: return None repository_metadata = metadata_util.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, latest_downloadable_revision) if repository_metadata is not None and repository_metadata.downloadable: return repository_metadata return None
def get_latest_downloadable_repository_metadata( trans, repository ): """ Return the latest downloadable repository_metadata record for the received repository. This will return repositories of type unrestricted as well as types repository_suite_definition and tool_dependency_definition. """ encoded_repository_id = trans.security.encode_id( repository.id ) repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False ) tip_ctx = str( repo.changectx( repo.changelog.tip() ) ) repository_metadata = None try: repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, tip_ctx ) if repository_metadata is not None and repository_metadata.downloadable: return repository_metadata return None except: latest_downloadable_revision = metadata_util.get_previous_metadata_changeset_revision( repository, repo, tip_ctx, downloadable=True ) if latest_downloadable_revision == hg_util.INITIAL_CHANGELOG_HASH: return None repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, latest_downloadable_revision ) if repository_metadata is not None and repository_metadata.downloadable: return repository_metadata return None
def get_latest_repository_metadata(trans, repository): """ Return the latest repository_metadata record for the received repository if it exists. This will return repositories of type unrestricted as well as types repository_suite_definition and tool_dependency_definition. """ encoded_repository_id = trans.security.encode_id(repository.id) repo = repository.hg_repo tip_ctx = str(repo[repo.changelog.tip()]) try: repository_metadata = metadata_util.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, tip_ctx) return repository_metadata except Exception: latest_downloadable_revision = metadata_util.get_previous_metadata_changeset_revision( trans.app, repository, tip_ctx, downloadable=False) if latest_downloadable_revision == hg_util.INITIAL_CHANGELOG_HASH: return None repository_metadata = metadata_util.get_repository_metadata_by_changeset_revision( trans.app, encoded_repository_id, latest_downloadable_revision) return repository_metadata