/lib/galaxy/sample_tracking/request_types.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 30 lines · 21 code · 3 blank · 6 comment · 3 complexity · 648fd27235cc7d2ed9cf84feac3c1f49 MD5 · raw file

  1. """
  2. RequestType
  3. """
  4. import logging
  5. from galaxy.model import RequestType
  6. from sample import sample_state_factory
  7. RENAME_DATASET_OPTIONS = dict( [ ( f_type.lower(), f_descript ) for f_type, f_descript in RequestType.rename_dataset_options.items() ] )
  8. class RequestTypeFactory( object ):
  9. def __init__( self, sample_state_factory, rename_dataset_options ):
  10. self.sample_state_factory = sample_state_factory
  11. self.rename_dataset_options = rename_dataset_options
  12. def new( self, name, request_form, sample_form, external_service, description=None, sample_states = None ):
  13. """Return new RequestType."""
  14. assert name, 'RequestType requires a name'
  15. return RequestType( name=name, desc=description, request_form=request_form, sample_form=sample_form, external_service=external_service )
  16. def from_elem( self, elem, request_form, sample_form, external_service ):
  17. """Return RequestType created from an xml string."""
  18. name = elem.get( 'name', '' )
  19. description = elem.get( 'description', '' )
  20. rval = self.new( name, request_form, sample_form, external_service=external_service, description=description )
  21. #load states
  22. sample_states_elem = elem.find( 'sample_states' )
  23. if sample_states_elem:
  24. for sample_state_elem in sample_states_elem.findall( 'state' ):
  25. sample_state = self.sample_state_factory.from_elem( rval, sample_state_elem )
  26. return rval
  27. request_type_factory = RequestTypeFactory( sample_state_factory, RENAME_DATASET_OPTIONS )