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 = repository_util.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_all_metadata_on_installed_repository( self, id ): """Reset all metadata on a single tool shed repository installed into a Galaxy instance.""" invalid_file_tups = [] metadata_dict = {} repository = repository_util.get_installed_tool_shed_repository( self.app, id ) repository_clone_url = common_util.generate_clone_url_for_installed_repository( self.app, repository ) tool_path, relative_install_dir = repository.get_tool_relative_path( self.app ) if relative_install_dir: original_metadata_dict = repository.metadata metadata_dict, invalid_file_tups = \ self.generate_metadata_for_changeset_revision( repository=repository, changeset_revision=repository.changeset_revision, repository_clone_url=repository_clone_url, shed_config_dict = repository.get_shed_config_dict( self.app ), relative_install_dir=relative_install_dir, repository_files_dir=None, resetting_all_metadata_on_repository=False, updating_installed_repository=False, persist=False ) repository.metadata = metadata_dict if metadata_dict != original_metadata_dict: self.update_in_shed_tool_config( repository ) self.app.install_model.context.add( repository ) self.app.install_model.context.flush() log.debug( 'Metadata has been reset on repository %s.' % repository.name ) else: log.debug( 'Metadata did not need to be reset on repository %s.' % repository.name ) else: log.debug( 'Error locating installation directory for repository %s.' % repository.name ) return invalid_file_tups, metadata_dict
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 = repository_util.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 = tool_util.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: 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
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 = repository_util.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 = tool_util.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: 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