/templates/requests/common/view_request.mako

https://bitbucket.org/cistrome/cistrome-harvard/ · Mako · 174 lines · 163 code · 8 blank · 3 comment · 8 complexity · 2e43ec69e0ed570ea99ab43394cb7737 MD5 · raw file

  1. <%inherit file="/base.mako"/>
  2. <%namespace file="/message.mako" import="render_msg" />
  3. <%namespace file="/requests/common/common.mako" import="common_javascripts" />
  4. <%namespace file="/requests/common/common.mako" import="render_samples_grid" />
  5. <%namespace file="/requests/common/common.mako" import="render_request_type_sample_form_grids" />
  6. <%namespace file="/requests/common/common.mako" import="render_samples_messages" />
  7. <%def name="stylesheets()">
  8. ${parent.stylesheets()}
  9. ${h.css( "library" )}
  10. </%def>
  11. <%def name="javascripts()">
  12. ${parent.javascripts()}
  13. ${common_javascripts()}
  14. </%def>
  15. <%
  16. from galaxy.web.framework.helpers import time_ago
  17. is_admin = cntrller == 'requests_admin' and trans.user_is_admin()
  18. is_complete = request.is_complete
  19. is_submitted = request.is_submitted
  20. is_unsubmitted = request.is_unsubmitted
  21. can_edit_request = ( is_admin and not request.is_complete ) or request.is_unsubmitted
  22. can_delete_samples = request.samples and not is_complete
  23. can_edit_samples = request.samples and ( is_admin or not is_complete )
  24. can_reject = is_admin and is_submitted
  25. can_submit = request.samples and is_unsubmitted
  26. can_undelete = request.deleted
  27. if is_admin:
  28. can_add_samples = not is_complete
  29. else:
  30. can_add_samples = is_unsubmitted
  31. %>
  32. <br/><br/>
  33. <ul class="manage-table-actions">
  34. %if can_submit:
  35. <li><a class="action-button" confirm="More samples cannot be added to this request after it is submitted. Click OK to submit." href="${h.url_for( controller='requests_common', action='submit_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Submit request</a></li>
  36. %endif
  37. <li><a class="action-button" id="request-${request.id}-popup" class="menubutton">Request Actions</a></li>
  38. <div popupmenu="request-${request.id}-popup">
  39. %if can_undelete:
  40. <a class="action-button" href="${h.url_for( controller='requests_common', action='undelete_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Undelete this request</a>
  41. %endif
  42. %if can_edit_request:
  43. <a class="action-button" href="${h.url_for( controller='requests_common', action='edit_basic_request_info', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Edit this request</a>
  44. %endif
  45. <a class="action-button" href="${h.url_for( controller='requests_common', action='view_request_history', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">View history</a>
  46. %if can_reject:
  47. <a class="action-button" href="${h.url_for( controller='requests_admin', action='reject_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Reject this request</a>
  48. %endif
  49. </div>
  50. </ul>
  51. ${render_samples_messages(request, is_admin, is_submitted, message, status)}
  52. <div class="toolForm">
  53. <div class="toolFormTitle">Sequencing request "${request.name}"</div>
  54. <div class="toolFormBody">
  55. <div class="form-row">
  56. <label>Current state:</label>
  57. <a href="${h.url_for( controller='requests_common', action='view_request_history', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">${request.state}</a>
  58. <div style="clear: both"></div>
  59. </div>
  60. <div class="form-row">
  61. <label>Description:</label>
  62. ${request.desc}
  63. <div style="clear: both"></div>
  64. </div>
  65. <div class="form-row">
  66. <label>User:</label>
  67. ${request.user.email}
  68. <div style="clear: both"></div>
  69. </div>
  70. <div class="form-row">
  71. <label>Request type:</label>
  72. %if is_admin:
  73. <a href="${h.url_for( controller='request_type', action='view_request_type', cntrller=cntrller, id=trans.security.encode_id( request.type.id ) )}">${request.type.name}</a>
  74. %else:
  75. ${request.type.name}
  76. %endif
  77. <div style="clear: both"></div>
  78. </div>
  79. <div class="form-row">
  80. <h4><img src="/static/images/silk/resultset_next.png" alt="Show" onclick="showContent(this);" style="cursor:pointer;"/> More</h4>
  81. <div style="display:none;">
  82. %for index, rd in enumerate( request_widgets ):
  83. <%
  84. field_label = rd[ 'label' ]
  85. field_value = rd[ 'value' ]
  86. %>
  87. <div class="form-row">
  88. <label>${field_label}:</label>
  89. ${field_value}
  90. </div>
  91. <div style="clear: both"></div>
  92. %endfor
  93. <div class="form-row">
  94. <label>Date created:</label>
  95. ${request.create_time}
  96. <div style="clear: both"></div>
  97. </div>
  98. <div class="form-row">
  99. <label>Last updated:</label>
  100. ${time_ago( request.update_time )}
  101. <div style="clear: both"></div>
  102. </div>
  103. <div class="form-row">
  104. <label>Email recipients:</label>
  105. <%
  106. if request.notification:
  107. emails = ', '.join( request.notification[ 'email' ] )
  108. else:
  109. emails = ''
  110. %>
  111. ${emails}
  112. <div style="clear: both"></div>
  113. </div>
  114. <div class="form-row">
  115. <label>Send email when state changes to:</label>
  116. <%
  117. if request.notification:
  118. states = []
  119. for ss in request.type.states:
  120. if ss.id in request.notification[ 'sample_states' ]:
  121. states.append( ss.name )
  122. states = ', '.join( states )
  123. else:
  124. states = ''
  125. %>
  126. ${states}
  127. <div style="clear: both"></div>
  128. </div>
  129. ## Sample state updater
  130. %if request.samples and request.is_submitted and request.samples_with_bar_code:
  131. <script type="text/javascript">
  132. // Updater
  133. sample_state_updater( {${ ",".join( [ '"%s" : "%s"' % ( s.id, s.state.name ) for s in request.samples ] ) }});
  134. </script>
  135. %endif
  136. ## Number of sample datasets updater
  137. %if request.samples and request.is_submitted:
  138. <script type="text/javascript">
  139. // Updater
  140. sample_datasets_updater( {${ ",".join( [ '"%s" : "%s"' % ( s.id, len(s.datasets) ) for s in request.samples ] ) }});
  141. </script>
  142. %endif
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. <p/>
  148. %if displayable_sample_widgets:
  149. <%
  150. grid_header = '<h3>Samples</h3>'
  151. render_buttons = can_edit_samples
  152. %>
  153. ${render_samples_grid( cntrller, request, displayable_sample_widgets=displayable_sample_widgets, action='view_request', adding_new_samples=True, encoded_selected_sample_ids=[], render_buttons=render_buttons, grid_header=grid_header )}
  154. ## Render the other grids
  155. <% trans.sa_session.refresh( request.type.sample_form ) %>
  156. %for grid_index, grid_name in enumerate( request.type.sample_form.layout ):
  157. ${render_request_type_sample_form_grids( grid_index, grid_name, request.type.sample_form.grid_fields( grid_index ), displayable_sample_widgets=displayable_sample_widgets, show_saved_samples_read_only=True )}
  158. %endfor
  159. %else:
  160. There are no samples.
  161. %if can_add_samples:
  162. <ul class="manage-table-actions">
  163. <li><a class="action-button" href="${h.url_for( controller='requests_common', action='add_sample', cntrller=cntrller, request_id=trans.security.encode_id( request.id ), add_sample_button='Add sample' )}">Add sample</a></li>
  164. </ul>
  165. %endif
  166. %endif