mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Added ability to add samples after a request is submitted.
This commit is contained in:
@@ -1176,22 +1176,35 @@ class RequestsCommon( BaseController, UsesFormDefinitions ):
|
||||
# until the request is submitted, at which time all samples of the request will be
|
||||
# set to the first SampleState configured for the request's RequestType configured
|
||||
# by the admin ( i.e., the sample's SampleState would be set to request.type.states[0] ).
|
||||
new_samples = []
|
||||
for index in range( len( samples ) - len( request.samples ) ):
|
||||
sample_index = len( request.samples )
|
||||
sample_widget = samples[ sample_index ]
|
||||
form_values = trans.model.FormValues( request.type.sample_form, sample_widget[ 'field_values' ] )
|
||||
trans.sa_session.add( form_values )
|
||||
trans.sa_session.flush()
|
||||
s = trans.model.Sample( name=sample_widget[ 'name' ],
|
||||
desc='',
|
||||
request=request,
|
||||
form_values=form_values,
|
||||
bar_code='',
|
||||
library=sample_widget[ 'library' ],
|
||||
folder=sample_widget[ 'folder' ],
|
||||
history=sample_widget['history'],
|
||||
workflow=sample_widget['workflow_dict'] )
|
||||
trans.sa_session.add( s )
|
||||
sample = trans.model.Sample( name=sample_widget[ 'name' ],
|
||||
desc='',
|
||||
request=request,
|
||||
form_values=form_values,
|
||||
bar_code='',
|
||||
library=sample_widget[ 'library' ],
|
||||
folder=sample_widget[ 'folder' ],
|
||||
history=sample_widget['history'],
|
||||
workflow=sample_widget['workflow_dict'] )
|
||||
trans.sa_session.add( sample )
|
||||
trans.sa_session.flush()
|
||||
new_samples.append( sample )
|
||||
# If this sample is added when the request is already submitted then these new samples
|
||||
# should be in the first sample state when saved
|
||||
if request.is_submitted:
|
||||
initial_sample_state_after_request_submitted = request.type.states[0]
|
||||
for sample in new_samples:
|
||||
event_comment = 'Sample added and sample state set to %s.' % request.type.states[0].name
|
||||
event = trans.model.SampleEvent( sample,
|
||||
initial_sample_state_after_request_submitted,
|
||||
event_comment )
|
||||
trans.sa_session.add( event )
|
||||
trans.sa_session.flush()
|
||||
return trans.response.send_redirect( web.url_for( controller='requests_common',
|
||||
action=redirect_action,
|
||||
@@ -1351,6 +1364,15 @@ class RequestsCommon( BaseController, UsesFormDefinitions ):
|
||||
history = sample.history
|
||||
workflow = sample.workflow
|
||||
field_values = sample.values.content
|
||||
if not history:
|
||||
history_id = 'none'
|
||||
else:
|
||||
history_id = history.id
|
||||
if not workflow:
|
||||
workflow_id = 'none'
|
||||
else:
|
||||
workflow_id = workflow.id
|
||||
workflow_dict = sample.workflow
|
||||
else:
|
||||
# Update the sample attributes from kwd
|
||||
sample_id = None
|
||||
|
||||
@@ -22,7 +22,10 @@
|
||||
is_complete = request.is_complete
|
||||
is_submitted = request.is_submitted
|
||||
is_unsubmitted = request.is_unsubmitted
|
||||
can_add_samples = is_unsubmitted
|
||||
if is_admin:
|
||||
can_add_samples = not is_complete
|
||||
else:
|
||||
can_add_samples = is_unsubmitted
|
||||
can_delete_samples = request.samples and not is_complete
|
||||
can_edit_samples = request.samples and ( is_admin or not is_complete )
|
||||
can_edit_request = ( is_admin and not request.is_complete ) or request.is_unsubmitted
|
||||
@@ -73,7 +76,7 @@ ${render_samples_messages(request, is_admin, is_submitted, message, status)}
|
||||
%else:
|
||||
<label>There are no samples.</label>
|
||||
%endif
|
||||
%if is_unsubmitted:
|
||||
%if can_add_samples:
|
||||
## The user is adding a new sample
|
||||
%if displayable_sample_widgets:
|
||||
<p/>
|
||||
|
||||
@@ -315,22 +315,25 @@
|
||||
|
||||
<%def name="render_samples_grid( cntrller, request, displayable_sample_widgets, action, adding_new_samples=False, encoded_selected_sample_ids=[], render_buttons=False, grid_header='<h3>Samples</h3>' )">
|
||||
## Displays the "Samples" grid
|
||||
<%
|
||||
trans.sa_session.refresh( request )
|
||||
is_admin = cntrller == 'requests_admin' and trans.user_is_admin()
|
||||
is_complete = request.is_complete
|
||||
is_rejected = request.is_rejected
|
||||
is_submitted = request.is_submitted
|
||||
is_unsubmitted = request.is_unsubmitted
|
||||
can_add_samples = request.is_unsubmitted
|
||||
can_delete_samples = not adding_new_samples and request.samples and ( ( is_admin and not is_complete ) or is_unsubmitted )
|
||||
can_edit_samples = request.samples and ( is_admin or not is_complete )
|
||||
can_select_datasets = is_admin and displayable_sample_widgets and ( is_submitted or is_complete )
|
||||
can_transfer_datasets = is_admin and request.samples and not request.is_rejected
|
||||
display_checkboxes = not adding_new_samples and ( is_complete or is_rejected or is_submitted )
|
||||
display_bar_code = request.samples and ( is_complete or is_rejected or is_submitted )
|
||||
display_datasets = request.samples and ( is_complete or is_submitted )
|
||||
%>
|
||||
<%
|
||||
trans.sa_session.refresh( request )
|
||||
is_admin = cntrller == 'requests_admin' and trans.user_is_admin()
|
||||
is_complete = request.is_complete
|
||||
is_rejected = request.is_rejected
|
||||
is_submitted = request.is_submitted
|
||||
is_unsubmitted = request.is_unsubmitted
|
||||
if is_admin:
|
||||
can_add_samples = not is_complete
|
||||
else:
|
||||
can_add_samples = is_unsubmitted
|
||||
can_delete_samples = not adding_new_samples and request.samples and ( ( is_admin and not is_complete ) or is_unsubmitted )
|
||||
can_edit_samples = request.samples and ( is_admin or not is_complete )
|
||||
can_select_datasets = is_admin and displayable_sample_widgets and ( is_submitted or is_complete )
|
||||
can_transfer_datasets = is_admin and request.samples and not request.is_rejected
|
||||
display_checkboxes = not adding_new_samples and ( is_complete or is_rejected or is_submitted )
|
||||
display_bar_code = request.samples and ( is_complete or is_rejected or is_submitted )
|
||||
display_datasets = request.samples and ( is_complete or is_submitted )
|
||||
%>
|
||||
${grid_header}
|
||||
%if render_buttons and ( can_add_samples or can_edit_samples ):
|
||||
<ul class="manage-table-actions">
|
||||
|
||||
@@ -37,7 +37,10 @@
|
||||
is_complete = request.is_complete
|
||||
is_submitted = request.is_submitted
|
||||
is_unsubmitted = request.is_unsubmitted
|
||||
can_add_samples = is_unsubmitted
|
||||
if is_admin:
|
||||
can_add_samples = not is_complete
|
||||
else:
|
||||
can_add_samples = is_unsubmitted
|
||||
can_delete_samples = request.samples and not is_complete
|
||||
can_edit_request = ( is_admin and not request.is_complete ) or request.is_unsubmitted
|
||||
can_reject = is_admin and is_submitted
|
||||
|
||||
@@ -22,13 +22,16 @@
|
||||
is_complete = request.is_complete
|
||||
is_submitted = request.is_submitted
|
||||
is_unsubmitted = request.is_unsubmitted
|
||||
can_add_samples = is_unsubmitted
|
||||
can_edit_request = ( is_admin and not request.is_complete ) or request.is_unsubmitted
|
||||
can_delete_samples = request.samples and not is_complete
|
||||
can_edit_samples = request.samples and ( is_admin or not is_complete )
|
||||
can_reject = is_admin and is_submitted
|
||||
can_submit = request.samples and is_unsubmitted
|
||||
can_undelete = request.deleted
|
||||
if is_admin:
|
||||
can_add_samples = not is_complete
|
||||
else:
|
||||
can_add_samples = is_unsubmitted
|
||||
%>
|
||||
|
||||
<br/><br/>
|
||||
|
||||
@@ -563,11 +563,12 @@ class TestFormsAndSampleTracking( TwillTestCase ):
|
||||
state=request1.states.SUBMITTED,
|
||||
strings_displayed=[ request1.name ] )
|
||||
strings_displayed = [ request1.states.SUBMITTED,
|
||||
'Reject this request' ]
|
||||
strings_not_displayed = [ 'Add sample' ]
|
||||
'Reject this request',
|
||||
'Add sample',
|
||||
'Edit samples' ]
|
||||
self.view_request( cntrller='requests_admin',
|
||||
request_id=self.security.encode_id( request1.id ),
|
||||
strings_not_displayed=strings_not_displayed )
|
||||
strings_displayed=strings_displayed )
|
||||
# Set bar codes for the samples
|
||||
bar_codes = [ '10001', '10002', '10003' ]
|
||||
strings_displayed_after_submit = [ 'Changes made to the samples have been saved.' ]
|
||||
|
||||
Reference in New Issue
Block a user