1 new commit in galaxy-central: https://bitbucket.org/galaxy/galaxy-central/commits/5f6c670dca9f/ Changeset: 5f6c670dca9f User: inithello Date: 2014-01-10 21:02:20 Summary: Use class instead of substrings to identify integrated tool panel tools, sections, workflows, and section labels when saving and updating the panel. Affected #: 2 files diff -r afa0a32a883dde3dee88e8cfeb2f84ba16b27f1c -r 5f6c670dca9f42d52480f66afeb91b63710e7ffb lib/galaxy/tools/__init__.py --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -62,6 +62,7 @@ from galaxy.web import url_for from galaxy.web.form_builder import SelectField from galaxy.model.item_attrs import Dictifiable +from galaxy.model import Workflow from tool_shed.util import shed_util_common from .loader import load_tool, template_macro_params @@ -142,13 +143,13 @@ # 1) adjusting init_tools() and called methods to get this right # 2) redesigning the code and/or data structure used to read/write integrated_tool_panel.xml for key, value in self.integrated_tool_panel.iteritems(): - if key.startswith( 'section_' ): + if isinstance( value, ToolSection ): for section_key, section_value in value.elems.iteritems(): if section_value is None: - if section_key.startswith( 'tool_' ): + if isinstance( section_value, Tool ): tool_id = section_key[5:] value.elems[section_key] = self.tools_by_id.get( tool_id ) - elif section_key.startswith( 'workflow_' ): + elif isinstance( section_value, Workflow ): workflow_id = section_key[9:] value.elems[section_key] = self.workflows_by_id.get( workflow_id ) @@ -252,19 +253,19 @@ def load_tool_panel( self ): for key, val in self.integrated_tool_panel.items(): - if key.startswith( 'tool_' ): + if isinstance( val, Tool ): tool_id = key.replace( 'tool_', '', 1 ) if tool_id in self.tools_by_id: self.__add_tool_to_tool_panel( tool_id, self.tool_panel, section=False ) - elif key.startswith( 'workflow_' ): + elif isinstance( val, Workflow ): workflow_id = key.replace( 'workflow_', '', 1 ) if workflow_id in self.workflows_by_id: workflow = self.workflows_by_id[ workflow_id ] self.tool_panel[ key ] = workflow log.debug( "Loaded workflow: %s %s" % ( workflow_id, workflow.name ) ) - elif key.startswith( 'label_' ): + elif isinstance( val, ToolSectionLabel ): self.tool_panel[ key ] = val - elif key.startswith( 'section_' ): + elif isinstance( val, ToolSection ): elem = ElementTree.Element( 'section' ) elem.attrib[ 'id' ] = val.id or '' elem.attrib[ 'name' ] = val.name or '' @@ -276,13 +277,13 @@ tool_id = section_key.replace( 'tool_', '', 1 ) if tool_id in self.tools_by_id: self.__add_tool_to_tool_panel( tool_id, section, section=True ) - elif section_key.startswith( 'workflow_' ): + elif isinstance( section_val, Workflow ): workflow_id = section_key.replace( 'workflow_', '', 1 ) if workflow_id in self.workflows_by_id: workflow = self.workflows_by_id[ workflow_id ] section.elems[ section_key ] = workflow log.debug( "Loaded workflow: %s %s" % ( workflow_id, workflow.name ) ) - elif section_key.startswith( 'label_' ): + elif isinstance( val, ToolSectionLabel ): if section_val: section.elems[ section_key ] = section_val log.debug( "Loaded label: %s" % ( section_val.text ) ) @@ -315,7 +316,7 @@ elif section_elem.tag == 'label': key = 'label_%s' % section_elem.get( 'id' ) section.elems[ key ] = None - key = 'section_%s' % elem.get( 'id' ) + key = elem.get( 'id' ) self.integrated_tool_panel[ key ] = section elif elem.tag == 'label': key = 'label_%s' % elem.get( 'id' ) @@ -331,28 +332,28 @@ os.write( fd, '<toolbox>\n' ) for key, item in self.integrated_tool_panel.items(): if item: - if key.startswith( 'tool_' ): + if isinstance( item, Tool ): os.write( fd, ' <tool id="%s" />\n' % item.id ) - elif key.startswith( 'workflow_' ): + elif isinstance( item, Workflow ): os.write( fd, ' <workflow id="%s" />\n' % item.id ) - elif key.startswith( 'label_' ): + elif isinstance( item, ToolSectionLabel ): label_id = item.id or '' label_text = item.text or '' label_version = item.version or '' os.write( fd, ' <label id="%s" text="%s" version="%s" />\n' % ( label_id, label_text, label_version ) ) - elif key.startswith( 'section_' ): + elif isinstance( item, ToolSection ): section_id = item.id or '' section_name = item.name or '' section_version = item.version or '' os.write( fd, ' <section id="%s" name="%s" version="%s">\n' % ( section_id, section_name, section_version ) ) for section_key, section_item in item.elems.items(): - if section_key.startswith( 'tool_' ): + if isinstance( section_item, Tool ): if section_item: os.write( fd, ' <tool id="%s" />\n' % section_item.id ) - elif section_key.startswith( 'workflow_' ): + elif isinstance( section_item, Workflow ): if section_item: os.write( fd, ' <workflow id="%s" />\n' % section_item.id ) - elif section_key.startswith( 'label_' ): + elif isinstance( section_item, ToolSectionLabel ): if section_item: label_id = section_item.id or '' label_text = section_item.text or '' @@ -576,7 +577,7 @@ integrated_panel_dict.insert( index, key, label ) def load_section_tag_set( self, elem, tool_path, load_panel_dict, index=None ): - key = 'section_' + elem.get( "id" ) + key = elem.get( "id" ) if key in self.tool_panel: section = self.tool_panel[ key ] elems = section.elems @@ -1078,14 +1079,14 @@ def get_panel_section( self ): for key, item in self.app.toolbox.integrated_tool_panel.items(): if item: - if key.startswith( 'tool_' ): + if isinstance( item, Tool ): if item.id == self.id: return '', '' - if key.startswith( 'section_' ): + if isinstance( item, ToolSection ): section_id = item.id or '' section_name = item.name or '' for section_key, section_item in item.elems.items(): - if section_key.startswith( 'tool_' ): + if isinstance( section_item, Tool ): if section_item: if section_item.id == self.id: return section_id, section_name diff -r afa0a32a883dde3dee88e8cfeb2f84ba16b27f1c -r 5f6c670dca9f42d52480f66afeb91b63710e7ffb lib/tool_shed/util/tool_util.py --- a/lib/tool_shed/util/tool_util.py +++ b/lib/tool_shed/util/tool_util.py @@ -466,11 +466,7 @@ return sample_files, deleted_sample_files def get_or_create_tool_section( trans, tool_panel_section_id, new_tool_panel_section_label=None ): - if tool_panel_section_id.startswith( 'section_' ): - tool_panel_section_key = tool_panel_section_id - tool_panel_section_id.lstrip( 'section_' ) - else: - tool_panel_section_key = 'section_%s' % str( tool_panel_section_id ) + tool_panel_section_key = str( tool_panel_section_id ) if tool_panel_section_key in trans.app.toolbox.tool_panel: # Appending a tool to an existing section in trans.app.toolbox.tool_panel tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ] @@ -680,16 +676,13 @@ # received tool_panel_section_id must be the id retrieved from a tool panel config (e.g., tool_conf.xml, which # may have getext). If new_tool_panel_section_label is received, a new section will be added to the tool panel. if new_tool_panel_section_label: - section_id = 'section_%s' % str( new_tool_panel_section_label.lower().replace( ' ', '_' ) ) + section_id = str( new_tool_panel_section_label.lower().replace( ' ', '_' ) ) tool_panel_section_key, tool_section = \ get_or_create_tool_section( trans, tool_panel_section_id=section_id, new_tool_panel_section_label=new_tool_panel_section_label ) elif tool_panel_section_id: - if tool_panel_section_id.startswith( 'section_' ): - tool_panel_section_key = str( tool_panel_section_id ) - else: - tool_panel_section_key = 'section_%s' % str( tool_panel_section_id ) + tool_panel_section_key = str( tool_panel_section_id ) tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ] else: return None, None @@ -1000,7 +993,7 @@ for config_elem in config_elems: if config_elem.tag == 'section': # Get the section key for the in-memory tool panel. - section_key = 'section_%s' % str( config_elem.get( "id" ) ) + section_key = str( config_elem.get( "id" ) ) # Generate the list of tool elements to remove. tool_elems_to_remove = [] for tool_elem in config_elem: Repository URL: https://bitbucket.org/galaxy/galaxy-central/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.