/lib/galaxy/external_services/result_handlers/basic.py
https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 61 lines · 47 code · 9 blank · 5 comment · 1 complexity · 6acfba084b4fa62003e397fec1e8fc98 MD5 · raw file
- from galaxy.util.json import to_json_string, from_json_string
- from galaxy.util.template import fill_template
- import logging
- log = logging.getLogger( __name__ )
- class ExternalServiceActionResultHandler( object ):
- """ Basic Class for External Service Actions Result Handlers"""
- type = 'display'
- @classmethod
- def from_elem( cls, elem, parent ):
- result_type = elem.get( 'type', None )
- assert result_type, 'ExternalServiceActionResultHandler requires a type'
- return result_type_to_class[ result_type ]( elem, parent )
- def __init__( self, elem, parent ):
- self.parent = parent
- def handle_result( self, result, param_dict, trans):
- return result.content
- #need to think about how to restore or set mime type:
- #both as specified in xml and also as set by an action,
- # e.g. mimetype returned from web_api action should be reused here...
- class ExternalServiceActionURLRedirectResultHandler( ExternalServiceActionResultHandler ):
- """ Basic Class for External Service Actions Result Handlers"""
- type = 'web_redirect'
- @classmethod
- def from_elem( cls, elem, parent ):
- result_type = elem.get( 'type', None )
- assert result_type, 'ExternalServiceActionResultHandler requires a type'
- return result_type_to_class[ result_type ]( elem, parent )
- def __init__( self, elem, parent ):
- self.parent = parent
- def handle_result( self, result, param_dict, trans ):
- return trans.response.send_redirect( result.content )
- class ExternalServiceActionJSONResultHandler( ExternalServiceActionResultHandler ):
- """Class for External Service Actions JQuery Result Handler"""
- type = 'json_display'
- def handle_result( self, result, param_dict, trans ):
- rval = from_json_string( result.content )
- return trans.fill_template( '/external_services/generic_json.mako', result = rval, param_dict = param_dict, action=self.parent )
- class ExternalServiceActionJQueryGridResultHandler( ExternalServiceActionResultHandler ):
- """Class for External Service Actions JQuery Result Handler"""
- type = 'jquery_grid'
- def handle_result( self, result, param_dict, trans ):
- rval = from_json_string( result.content )
- return trans.fill_template( '/external_services/generic_jquery_grid.mako', result = rval, param_dict = param_dict, action=self.parent )
- result_type_to_class = {}
- for handler_class in [ ExternalServiceActionResultHandler, ExternalServiceActionURLRedirectResultHandler, ExternalServiceActionJQueryGridResultHandler, ExternalServiceActionJSONResultHandler ]:
- result_type_to_class[handler_class.type] = handler_class