/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

  1. from galaxy.util.json import to_json_string, from_json_string
  2. from galaxy.util.template import fill_template
  3. import logging
  4. log = logging.getLogger( __name__ )
  5. class ExternalServiceActionResultHandler( object ):
  6. """ Basic Class for External Service Actions Result Handlers"""
  7. type = 'display'
  8. @classmethod
  9. def from_elem( cls, elem, parent ):
  10. result_type = elem.get( 'type', None )
  11. assert result_type, 'ExternalServiceActionResultHandler requires a type'
  12. return result_type_to_class[ result_type ]( elem, parent )
  13. def __init__( self, elem, parent ):
  14. self.parent = parent
  15. def handle_result( self, result, param_dict, trans):
  16. return result.content
  17. #need to think about how to restore or set mime type:
  18. #both as specified in xml and also as set by an action,
  19. # e.g. mimetype returned from web_api action should be reused here...
  20. class ExternalServiceActionURLRedirectResultHandler( ExternalServiceActionResultHandler ):
  21. """ Basic Class for External Service Actions Result Handlers"""
  22. type = 'web_redirect'
  23. @classmethod
  24. def from_elem( cls, elem, parent ):
  25. result_type = elem.get( 'type', None )
  26. assert result_type, 'ExternalServiceActionResultHandler requires a type'
  27. return result_type_to_class[ result_type ]( elem, parent )
  28. def __init__( self, elem, parent ):
  29. self.parent = parent
  30. def handle_result( self, result, param_dict, trans ):
  31. return trans.response.send_redirect( result.content )
  32. class ExternalServiceActionJSONResultHandler( ExternalServiceActionResultHandler ):
  33. """Class for External Service Actions JQuery Result Handler"""
  34. type = 'json_display'
  35. def handle_result( self, result, param_dict, trans ):
  36. rval = from_json_string( result.content )
  37. return trans.fill_template( '/external_services/generic_json.mako', result = rval, param_dict = param_dict, action=self.parent )
  38. class ExternalServiceActionJQueryGridResultHandler( ExternalServiceActionResultHandler ):
  39. """Class for External Service Actions JQuery Result Handler"""
  40. type = 'jquery_grid'
  41. def handle_result( self, result, param_dict, trans ):
  42. rval = from_json_string( result.content )
  43. return trans.fill_template( '/external_services/generic_jquery_grid.mako', result = rval, param_dict = param_dict, action=self.parent )
  44. result_type_to_class = {}
  45. for handler_class in [ ExternalServiceActionResultHandler, ExternalServiceActionURLRedirectResultHandler, ExternalServiceActionJQueryGridResultHandler, ExternalServiceActionJSONResultHandler ]:
  46. result_type_to_class[handler_class.type] = handler_class