def reset_metadata_on_selected_installed_repositories(self, trans, **kwd): repository_ids = util.listify(kwd.get("repository_ids")) if repository_ids: irmm = InstalledRepositoryMetadataManager(self.app) failed = [] successful = [] for repository_id in repository_ids: try: repository = get_installed_tool_shed_repository( self.app, repository_id) irmm.set_repository(repository) irmm.reset_all_metadata_on_installed_repository() if irmm.invalid_file_tups: failed.append(repository_id) else: successful.append(repository_id) except Exception: failed.append(repository_id) if successful: message = "Successful reset of metadata for %s." % len( successful) if failed: message += " Failed for %s." % len(failed) elif failed: message = "Failed to reset metadata for %s." % len(failed) return dict(message=message, successful=successful, failed=failed) else: raise exceptions.MessageException( "Please specify repository ids [repository_ids].")
def reset_metadata_on_selected_repositories(self, user, **kwd): """ Inspect the repository changelog to reset metadata for all appropriate changeset revisions. This method is called from both Galaxy and the Tool Shed. """ repository_ids = util.listify(kwd.get('repository_ids', None)) message = '' status = 'done' if repository_ids: successful_count = 0 unsuccessful_count = 0 for repository_id in repository_ids: try: repository = get_installed_tool_shed_repository( self.app, repository_id) self.set_repository(repository) self.reset_all_metadata_on_installed_repository() if self.invalid_file_tups: message = generate_message_for_invalid_tools( self.app, self.invalid_file_tups, repository, None, as_html=False) log.debug(message) unsuccessful_count += 1 else: log.debug( "Successfully reset metadata on repository %s owned by %s" % (str(repository.name), str(repository.owner))) successful_count += 1 except Exception: log.exception( "Error attempting to reset metadata on repository %s", str(repository.name)) unsuccessful_count += 1 message = "Successfully reset metadata on %d %s. " % \ (successful_count, inflector.cond_plural(successful_count, "repository")) if unsuccessful_count: message += "Error setting metadata on %d %s - see the paster log for details. " % \ (unsuccessful_count, inflector.cond_plural(unsuccessful_count, "repository")) else: message = 'Select at least one repository to on which to reset all metadata.' status = 'error' return message, status