/lib/galaxy/web/controllers/requests.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 91 lines · 82 code · 6 blank · 3 comment · 16 complexity · 12bb919a2afbaa68e72dd7254311a6f0 MD5 · raw file

  1. from galaxy.web.base.controller import *
  2. from galaxy.web.framework.helpers import grids
  3. from galaxy.model.orm import *
  4. from galaxy.web.form_builder import *
  5. from galaxy.web.controllers.requests_common import RequestsGrid
  6. import logging
  7. log = logging.getLogger( __name__ )
  8. class UserRequestsGrid( RequestsGrid ):
  9. operations = [ operation for operation in RequestsGrid.operations ]
  10. operations.append( grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: item.is_unsubmitted and not item.deleted ) ) )
  11. operations.append( grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: item.is_new and not item.deleted ) ) )
  12. operations.append( grids.GridOperation( "Undelete", allow_multiple=True, condition=( lambda item: item.deleted ) ) )
  13. def apply_query_filter( self, trans, query, **kwd ):
  14. return query.filter_by( user=trans.user )
  15. class Requests( BaseUIController ):
  16. request_grid = UserRequestsGrid()
  17. @web.expose
  18. @web.require_login( "view sequencing requests" )
  19. def index( self, trans ):
  20. return trans.fill_template( "requests/index.mako" )
  21. @web.expose
  22. @web.require_login( "create/submit sequencing requests" )
  23. def find_samples_index( self, trans ):
  24. return trans.fill_template( "requests/find_samples_index.mako" )
  25. @web.expose
  26. def browse_requests( self, trans, **kwd ):
  27. if 'operation' in kwd:
  28. operation = kwd['operation'].lower()
  29. if operation == "edit":
  30. return trans.response.send_redirect( web.url_for( controller='requests_common',
  31. action='edit_basic_request_info',
  32. cntrller='requests',
  33. **kwd ) )
  34. if operation == "add_samples":
  35. return trans.response.send_redirect( web.url_for( controller='requests_common',
  36. action='add_samples',
  37. cntrller='requests',
  38. **kwd ) )
  39. if operation == "edit_samples":
  40. return trans.response.send_redirect( web.url_for( controller='requests_common',
  41. action='edit_samples',
  42. cntrller='requests',
  43. **kwd ) )
  44. if operation == "view_request":
  45. return trans.response.send_redirect( web.url_for( controller='requests_common',
  46. action='view_request',
  47. cntrller='requests',
  48. **kwd ) )
  49. if operation == "delete":
  50. return trans.response.send_redirect( web.url_for( controller='requests_common',
  51. action='delete_request',
  52. cntrller='requests',
  53. **kwd ) )
  54. if operation == "undelete":
  55. return trans.response.send_redirect( web.url_for( controller='requests_common',
  56. action='undelete_request',
  57. cntrller='requests',
  58. **kwd ) )
  59. if operation == "view_request_history":
  60. return trans.response.send_redirect( web.url_for( controller='requests_common',
  61. action='view_request_history',
  62. cntrller='requests',
  63. **kwd ) )
  64. # If there are requests that have been rejected, show a message as a reminder to the user
  65. rejected = 0
  66. for request in trans.sa_session.query( trans.app.model.Request ) \
  67. .filter( trans.app.model.Request.table.c.deleted==False ) \
  68. .filter( trans.app.model.Request.table.c.user_id==trans.user.id ):
  69. if request.is_rejected:
  70. rejected = rejected + 1
  71. if rejected:
  72. status = 'warning'
  73. message = "%d requests (highlighted in red) were rejected. Click on the request name for details." % rejected
  74. kwd[ 'status' ] = status
  75. kwd[ 'message' ] = message
  76. # Allow the user to create a new request only if they have permission to access a request type.
  77. accessible_request_types = trans.app.security_agent.get_accessible_request_types( trans, trans.user )
  78. if accessible_request_types:
  79. self.request_grid.global_actions = [ grids.GridAction( "Create new request", dict( controller='requests_common',
  80. action='create_request',
  81. cntrller='requests' ) ) ]
  82. else:
  83. self.request_grid.global_actions = []
  84. # Render the list view
  85. return self.request_grid( trans, **kwd )