Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for tool_shed.repository_types.util

import logging

from galaxy.web.form_builder import SelectField

log = logging.getLogger(__name__)

REPOSITORY_DEPENDENCY_DEFINITION_FILENAME = 'repository_dependencies.xml'
REPOSITORY_SUITE_DEFINITION = 'repository_suite_definition'
TOOL_DEPENDENCY_DEFINITION = 'tool_dependency_definition'
TOOL_DEPENDENCY_DEFINITION_FILENAME = 'tool_dependencies.xml'
UNRESTRICTED = 'unrestricted'

types = [UNRESTRICTED, TOOL_DEPENDENCY_DEFINITION, REPOSITORY_SUITE_DEFINITION]


[docs]def build_repository_type_select_field(trans, repository=None, name='repository_type'): """Called from the Tool Shed to generate the current list of supported repository types.""" if repository: selected_type = str(repository.type) else: selected_type = None repository_type_select_field = SelectField(name=name) for type_label, type_class in trans.app.repository_types_registry.repository_types_by_label.items(): option_label = str(type_class.label) option_value = str(type_class.type) if selected_type and selected_type == option_value: selected = True else: selected = False if repository: if repository.type == option_value: repository_type_select_field.add_option(option_label, option_value, selected=selected) elif type_class.is_valid_for_type(trans.app, repository): repository_type_select_field.add_option(option_label, option_value, selected=selected) else: repository_type_select_field.add_option(option_label, option_value, selected=selected) return repository_type_select_field
[docs]def generate_message_for_repository_type_change(app, repository): message = '' if repository.can_change_type_to(app, REPOSITORY_SUITE_DEFINITION): repository_suite_definition_type_class = \ app.repository_types_registry.get_class_by_label(REPOSITORY_SUITE_DEFINITION) message += "This repository currently contains a single file named <b>%s</b>. If the intent of this repository is " % \ REPOSITORY_DEPENDENCY_DEFINITION_FILENAME message += "to define relationships to a collection of repositories that contain related Galaxy utilities with " message += "no plans to add additional files, consider setting its type to <b>%s</b>.<br/>" % \ repository_suite_definition_type_class.label elif repository.can_change_type_to(app, TOOL_DEPENDENCY_DEFINITION): tool_dependency_definition_type_class = \ app.repository_types_registry.get_class_by_label(TOOL_DEPENDENCY_DEFINITION) message += "This repository currently contains a single file named <b>%s</b>. If additional files will " % \ TOOL_DEPENDENCY_DEFINITION_FILENAME message += "not be added to this repository, consider setting its type to <b>%s</b>.<br/>" % \ tool_dependency_definition_type_class.label return message