/lib/galaxy/web/controllers/external_services.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 25 lines · 21 code · 4 blank · 0 comment · 3 complexity · c8d6134f71d684d12e31dfe82ea173d8 MD5 · raw file

  1. from galaxy.web.base.controller import *
  2. from galaxy.model import ExternalService, Sample
  3. import logging
  4. log = logging.getLogger( __name__ )
  5. class_name_to_class = {}
  6. for model_class in [Sample]:
  7. class_name_to_class[ model_class.__name__ ] = model_class
  8. class ExternalServiceController( BaseUIController ):
  9. @web.expose
  10. @web.require_admin
  11. def access_action( self, trans, external_service_action, item, item_type, **kwd ):
  12. if item_type in class_name_to_class:
  13. item_type = class_name_to_class.get( item_type )
  14. item = item_type.get( item )
  15. external_service_action_parsed = external_service_action.split( '|' )
  16. populated_external_service = ExternalService.get( external_service_action_parsed.pop( 0 ) ).populate_actions( trans, item )
  17. populated_action = populated_external_service.perform_action_by_name( external_service_action_parsed )
  18. results = populated_action.handle_results( trans )
  19. return results
  20. else:
  21. raise 'unknown item class type'