diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 667915d28de..8d735c7b3cd 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -50,9 +50,7 @@ from galaxy.web.form_builder import (AddressField, CheckboxField, HistoryField, log = logging.getLogger( __name__ ) -_datatypes_registry = galaxy.datatypes.registry.Registry() -# Default Value Required for unit tests -_datatypes_registry.load_datatypes() +_datatypes_registry = None # When constructing filters with in for a fixed set of ids, maximum # number of items to place in the IN statement. Different databases @@ -80,6 +78,12 @@ class ConverterDependencyException(Exception): return repr(self.value) +def _get_datatypes_registry(): + if _datatypes_registry is None: + raise Exception("galaxy.model.set_datatypes_registry must be called before performing certain DatasetInstance operations.") + return _datatypes_registry + + def set_datatypes_registry( d_registry ): """ Set up datatypes_registry @@ -1858,7 +1862,7 @@ class DatasetInstance( object ): @property def datatype( self ): - return _datatypes_registry.get_datatype_by_extension( self.extension ) + return _get_datatypes_registry().get_datatype_by_extension( self.extension ) def get_metadata( self ): # using weakref to store parent (to prevent circ ref), @@ -1892,7 +1896,7 @@ class DatasetInstance( object ): def change_datatype( self, new_ext ): self.clear_associated_files() - _datatypes_registry.change_datatype( self, new_ext ) + _get_datatypes_registry().change_datatype( self, new_ext ) def get_size( self, nice_size=False ): """Returns the size of the data on disk""" @@ -1929,7 +1933,7 @@ class DatasetInstance( object ): def get_mime( self ): """Returns the mime type of the data""" try: - return _datatypes_registry.get_mimetype_by_extension( self.extension.lower() ) + return _get_datatypes_registry().get_mimetype_by_extension( self.extension.lower() ) except AttributeError: # extension is None return 'data' @@ -2054,14 +2058,14 @@ class DatasetInstance( object ): return None def get_converter_types(self): - return self.datatype.get_converter_types( self, _datatypes_registry ) + return self.datatype.get_converter_types( self, _get_datatypes_registry() ) def can_convert_to(self, format): return format in self.get_converter_types() def find_conversion_destination( self, accepted_formats, **kwd ): """Returns ( target_ext, existing converted dataset )""" - return self.datatype.find_conversion_destination( self, accepted_formats, _datatypes_registry, **kwd ) + return self.datatype.find_conversion_destination( self, accepted_formats, _get_datatypes_registry(), **kwd ) def add_validation_error( self, validation_error ): self.validation_errors.append( validation_error ) diff --git a/test/unit/tools/test_column_parameters.py b/test/unit/tools/test_column_parameters.py index 44312dd1226..ac2cd968fe0 100644 --- a/test/unit/tools/test_column_parameters.py +++ b/test/unit/tools/test_column_parameters.py @@ -5,6 +5,7 @@ test_select_parameters.py. from galaxy.util import bunch from galaxy import model from .test_parameter_parsing import BaseParameterTestCase +from tools_support import datatypes_registry class DataColumnParameterTestCase( BaseParameterTestCase ): @@ -99,6 +100,6 @@ class DataColumnParameterTestCase( BaseParameterTestCase ): template_xml = '''''' param_str = template_xml % ( self.type, data_ref_text, multi_text, optional_text, self.other_attributes ) self._param = self._parameter_for( xml=param_str ) - self._param.ref_input = bunch.Bunch(formats=[model.datatypes_registry.get_datatype_by_extension("tabular")]) + self._param.ref_input = bunch.Bunch(formats=[datatypes_registry.get_datatype_by_extension("tabular")]) return self._param diff --git a/test/unit/tools_support.py b/test/unit/tools_support.py index 0249cb2bf88..0f78f857178 100644 --- a/test/unit/tools_support.py +++ b/test/unit/tools_support.py @@ -18,6 +18,11 @@ from galaxy.util.dbkeys import GenomeBuilds from galaxy.jobs import NoopQueue from galaxy.tools.parser import get_tool_source from galaxy.tools.deps.containers import NullContainerFinder +import galaxy.datatypes.registry + +datatypes_registry = galaxy.datatypes.registry.Registry() +datatypes_registry.load_datatypes() +galaxy.model.set_datatypes_registry(datatypes_registry) class UsesApp( object ):