Merge pull request #4541 from mvdbeek/build_module_speedup

Speedup toolform building
This commit is contained in:
Aysam Guerler
2017-09-03 12:32:43 -04:00
committed by GitHub
2 changed files with 20 additions and 10 deletions
+13 -10
View File
@@ -75,6 +75,7 @@ class Registry(object):
self.xml_filename = None
self._edam_formats_mapping = None
self._edam_data_mapping = None
self._converters_by_datatype = {}
# Build sites
self.build_sites = {}
self.display_sites = {}
@@ -797,16 +798,18 @@ class Registry(object):
def get_converters_by_datatype(self, ext):
"""Returns available converters by source type"""
converters = odict()
source_datatype = type(self.get_datatype_by_extension(ext))
for ext2, converters_dict in self.datatype_converters.items():
converter_datatype = type(self.get_datatype_by_extension(ext2))
if issubclass(source_datatype, converter_datatype):
converters.update(converters_dict)
# Ensure ext-level converters are present
if ext in self.datatype_converters.keys():
converters.update(self.datatype_converters[ext])
return converters
if ext not in self._converters_by_datatype:
converters = odict()
source_datatype = type(self.get_datatype_by_extension(ext))
for ext2, converters_dict in self.datatype_converters.items():
converter_datatype = type(self.get_datatype_by_extension(ext2))
if issubclass(source_datatype, converter_datatype):
converters.update(converters_dict)
# Ensure ext-level converters are present
if ext in self.datatype_converters.keys():
converters.update(self.datatype_converters[ext])
self._converters_by_datatype[ext] = converters
return self._converters_by_datatype[ext]
def get_converter_by_target_type(self, source_ext, target_ext):
"""Returns a converter based on source and target datatypes"""
+7
View File
@@ -22,6 +22,7 @@ class WorkRequestContext(ProvidesAppContext, ProvidesUserContext, ProvidesHistor
self.app = app
self.security = app.security
self.__user = user
self.__user_current_roles = None
self.__history = history
self.api_inherit_admin = False
self.workflow_building_mode = workflow_building_mode
@@ -40,6 +41,12 @@ class WorkRequestContext(ProvidesAppContext, ProvidesUserContext, ProvidesHistor
"""Return the current user if logged in or None."""
return self.__user
def get_current_user_roles(self):
if not self.__user_current_roles:
if self.__user:
self.__user_current_roles = self.__user.all_roles()
return self.__user_current_roles
def set_user(self, user):
"""Set the current user."""
raise NotImplementedError("Cannot change users from a work request context.")