details: http://www.bx.psu.edu/hg/galaxy/rev/0041f2ba49ed
changeset: 1540:0041f2ba49ed
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Thu Oct 02 12:45:03 2008 -0400
description:
Fix all root controller methods so that history_dataset_association.id is not confused with history_dataset_association.dataset_id.
1 file(s) affected in this change:
lib/galaxy/web/controllers/root.py
diffs (415 lines):
diff -r dd58d5aeb274 -r 0041f2ba49ed lib/galaxy/web/controllers/root.py
--- a/lib/galaxy/web/controllers/root.py Wed Oct 01 12:43:59 2008 -0400
+++ b/lib/galaxy/web/controllers/root.py Thu Oct 02 12:45:03 2008 -0400
@@ -21,9 +21,7 @@
@web.expose
def index(self, trans, id=None, tool_id=None, mode=None, m_c=None, m_a=None, **kwd):
- return trans.fill_template( "root/index.mako",
- tool_id=tool_id,
- m_c=m_c, m_a=m_a )
+ return trans.fill_template( "root/index.mako", tool_id=tool_id, m_c=m_c, m_a=m_a )
## ---- Tool related -----------------------------------------------------
@@ -68,10 +66,10 @@
@web.expose
def dataset_state ( self, trans, id=None, stamp=None ):
if id is not None:
- try:
- data = self.app.model.HistoryDatasetAssociation.get( id )
+ try:
+ data = self.app.model.Dataset.get( id )
except:
- return trans.show_error_message( "Unable to check dataset %s." %str( id ) )
+ return trans.show_error_message( "Unable to check dataset id %s." %str( id ) )
trans.response.headers['X-Dataset-State'] = data.state
trans.response.headers['Pragma'] = 'no-cache'
trans.response.headers['Expires'] = '0'
@@ -82,13 +80,13 @@
@web.expose
def dataset_code( self, trans, id=None, hid=None, stamp=None ):
if id is not None:
- try:
- data = self.app.model.HistoryDatasetAssociation.get( id )
+ try:
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
except:
- return trans.show_error_message( "Unable to check dataset %s." %str( id ) )
+ return trans.show_error_message( "Unable to check dataset id %s." % str( id ) )
trans.response.headers['Pragma'] = 'no-cache'
trans.response.headers['Expires'] = '0'
- return trans.fill_template("root/history_item.mako", data=data, hid=hid)
+ return trans.fill_template( "root/history_item.mako", data=hda.dataset, hid=hid )
else:
return trans.show_error_message( "Must specify a dataset id.")
@@ -103,11 +101,11 @@
ids = map( int, ids.split( "," ) )
states = states.split( "," )
for id, state in zip( ids, states ):
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data.state != state:
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ if hda.dataset.state != state:
rval[id] = {
- "state": data.state,
- "html": trans.fill_template( "root/history_item.mako", data=data, hid=data.hid )
+ "state": hda.dataset.state,
+ "html": trans.fill_template( "root/history_item.mako", data=hda, hid=hda.hid )
}
return rval
@@ -133,7 +131,6 @@
raise Exception( "History_dataset_association with hid '%s' does not exist." % str( hid ) )
else:
try:
- id = int( id )
history_dataset_assoc = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
except:
return "Dataset id '%s' is invalid." %str( id )
@@ -163,36 +160,36 @@
Returns child data directly into the browser, based upon parent_id and designation.
"""
try:
- data = self.app.model.HistoryDatasetAssociation.get( parent_id )
- if data:
- child = data.get_child_by_designation(designation)
+ hda = self.app.model.HistoryDatasetAssociation.get( parent_id )
+ if hda:
+ child = hda.get_child_by_designation( designation )
if child:
return self.display(trans, id=child.id, tofile=tofile, toext=toext)
except Exception:
pass
- return "A child named %s could not be found for data %s" % ( designation, parent_id )
+ return "A child named '%s' could not be found for history_dataset_association id '%s'" % ( designation, str( parent_id ) )
@web.expose
def display_as( self, trans, id=None, display_app=None, **kwd ):
"""Returns a file in a format that can successfully be displayed in display_app"""
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data:
- trans.response.set_content_type(data.get_mime())
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ if hda:
+ trans.response.set_content_type( hda.get_mime() )
trans.log_event( "Formatted dataset id %s for display at %s" % ( str(id), display_app ) )
- return data.as_display_type(display_app, **kwd)
+ return hda.as_display_type( display_app, **kwd )
else:
- return "No data with id=%d" % id
+ return "Dataset 'id' %s does not exist." % str( id )
@web.expose
def peek(self, trans, id=None):
"""Returns a 'peek' at the data"""
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data:
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ if hda:
yield "<html><body><pre>"
- yield data.peek
+ yield hda.peek
yield "</pre></body></html>"
else:
- yield "No data with id=%d" % id
+ yield "Dataset 'id' %s does not exist." % str( id )
@web.expose
def edit(self, trans, id=None, hid=None, **kwd):
@@ -200,76 +197,75 @@
if hid is not None:
history = trans.get_history()
# TODO: hid handling
- data = history.datasets[ int( hid ) - 1 ]
+ hda = history.datasets[ int( hid ) - 1 ]
elif id is None:
- return trans.show_error_message( "Problem loading dataset id %s with history id %s." % ( str( id ), str( hid ) ) )
+ return trans.show_error_message( "Problem loading dataset id '%s' with history id '%s'." % ( str( id ), str( hid ) ) )
else:
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data is None:
- return trans.show_error_message( "Problem retrieving dataset id %s with history id %s." % ( str( id ), str( hid ) ) )
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ if hda is None:
+ return trans.show_error_message( "Problem retrieving dataset 'id' %s with history id '%s'." % ( str( id ), str( hid ) ) )
p = util.Params(kwd, safe=False)
if p.change:
# The user clicked the Save button on the 'Change data type' form
- trans.app.datatypes_registry.change_datatype( data, p.datatype )
+ trans.app.datatypes_registry.change_datatype( hda, p.datatype )
trans.app.model.flush()
elif p.save:
# The user clicked the Save button on the 'Edit Attributes' form
- data.name = p.name
- data.info = p.info
+ hda.name = p.name
+ hda.info = p.info
# The following for loop will save all metadata_spec items
- for name, spec in data.datatype.metadata_spec.items():
+ for name, spec in hda.datatype.metadata_spec.items():
if spec.get("readonly"):
continue
optional = p.get("is_"+name, None)
if optional and optional == 'true':
# optional element... == 'true' actually means it is NOT checked (and therefore ommitted)
- setattr(data.metadata,name,None)
+ setattr( hda.metadata, name, None )
else:
- setattr(data.metadata,name,spec.unwrap(p.get(name, None), p))
+ setattr( hda.metadata, name, spec.unwrap( p.get( name, None ), p ) )
- data.datatype.after_edit( data )
+ hda.datatype.after_edit( hda )
trans.app.model.flush()
return trans.show_ok_message( "Attributes updated", refresh_frames=['history'] )
elif p.detect:
# The user clicked the Auto-detect button on the 'Edit Attributes' form
- for name, spec in data.datatype.metadata_spec.items():
+ for name, spec in hda.datatype.metadata_spec.items():
# We need to be careful about the attributes we are resetting
if name != 'name' and name != 'info' and name != 'dbkey':
if spec.get( 'default' ):
- setattr( data.metadata,name,spec.unwrap( spec.get( 'default' ), spec ))
- data.datatype.set_meta( data )
- data.datatype.after_edit( data )
+ setattr( hda.metadata, name, spec.unwrap( spec.get( 'default' ), spec ) )
+ hda.datatype.set_meta( hda )
+ hda.datatype.after_edit( hda )
trans.app.model.flush()
return trans.show_ok_message( "Attributes updated", refresh_frames=['history'] )
elif p.convert_data:
"""The user clicked the Convert button on the 'Convert to new format' form"""
target_type = kwd.get("target_type", None)
if target_type:
- msg = data.datatype.convert_dataset(trans, data, target_type)
+ msg = hda.datatype.convert_dataset(trans, hda, target_type)
return trans.show_ok_message( msg, refresh_frames=['history'] )
- data.datatype.before_edit( data )
+ hda.datatype.before_edit( hda )
- if "dbkey" in data.datatype.metadata_spec and not data.metadata.dbkey:
+ if "dbkey" in hda.datatype.metadata_spec and not hda.metadata.dbkey:
# Copy dbkey into metadata, for backwards compatability
# This looks like it does nothing, but getting the dbkey
# returns the metadata dbkey unless it is None, in which
# case it resorts to the old dbkey. Setting the dbkey
# sets it properly in the metadata
- data.metadata.dbkey = data.dbkey
+ hda.metadata.dbkey = hda.dbkey
metadata = list()
# a list of MetadataParemeters
- for name, spec in data.datatype.metadata_spec.items():
+ for name, spec in hda.datatype.metadata_spec.items():
if spec.visible:
- metadata.append( spec.wrap( data.metadata.get(name), data ) )
+ metadata.append( spec.wrap( hda.metadata.get( name ), hda ) )
# let's not overwrite the imported datatypes module with the variable datatypes?
ldatatypes = [x for x in trans.app.datatypes_registry.datatypes_by_extension.iterkeys()]
ldatatypes.sort()
- trans.log_event( "Opened edit view on dataset %s" % str(id) )
- return trans.fill_template( "/dataset/edit_attributes.mako", data=data, metadata=metadata,
- datatypes=ldatatypes, err=None )
+ trans.log_event( "Opened edit view on dataset id '%s'" % str( id ) )
+ return trans.fill_template( "/dataset/edit_attributes.mako", data=hda, metadata=metadata, datatypes=ldatatypes, err=None )
@web.expose
def delete( self, trans, id = None, **kwd):
@@ -284,21 +280,22 @@
int( id )
except:
continue
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data:
- # Walk up parent datasets to find the containing history
- topmost_parent = data
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ log.debug("***hda.dataset_id: %s" % str( hda.dataset_id))
+ if hda:
+ # Walk up parent hdas to find the containing history
+ topmost_parent = hda
while topmost_parent.parent:
topmost_parent = topmost_parent.parent
assert topmost_parent in history.datasets, "Data does not belong to current history"
# Mark deleted and cleanup
- data.mark_deleted()
- data.clear_associated_files()
+ hda.mark_deleted()
+ hda.clear_associated_files()
self.app.model.flush()
- trans.log_event( "Dataset id %s marked as deleted" % str(id) )
- if data.parent_id is None:
+ trans.log_event( "Dataset id '%s' marked as deleted" % str( id ) )
+ if hda.parent_id is None:
try:
- self.app.job_stop_queue.put( data.creating_job_associations[0].job )
+ self.app.job_stop_queue.put( hda.creating_job_associations[0].job )
except IndexError:
pass # upload tool will cause this since it doesn't have a job
return self.history( trans )
@@ -311,21 +308,21 @@
except:
return "Dataset id '%s' is invalid" %str( id )
history = trans.get_history()
- data = self.app.model.HistoryDatasetAssociation.get( id )
- if data:
+ hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ if hda:
# Walk up parent datasets to find the containing history
- topmost_parent = data
+ topmost_parent = hda
while topmost_parent.parent:
topmost_parent = topmost_parent.parent
assert topmost_parent in history.datasets, "Data does not belong to current history"
# Mark deleted and cleanup
- data.mark_deleted()
- data.clear_associated_files()
+ hda.mark_deleted()
+ hda.clear_associated_files()
self.app.model.flush()
- trans.log_event( "Dataset id %s marked as deleted async" % str(id) )
- if data.parent_id is None:
+ trans.log_event( "Dataset id '%s' marked as deleted async" % str( id ) )
+ if hda.parent_id is None:
try:
- self.app.job_stop_queue.put( data.creating_job_associations[0].job )
+ self.app.job_stop_queue.put( hda.creating_job_associations[0].job )
except IndexError:
pass # upload tool will cause this since it doesn't have a job
return "OK"
@@ -335,8 +332,7 @@
@web.expose
def history_options( self, trans ):
"""Displays a list of history related actions"""
- return trans.fill_template( "/history/options.mako",
- user = trans.get_user(), history = trans.get_history() )
+ return trans.fill_template( "/history/options.mako", user=trans.get_user(), history=trans.get_history() )
@web.expose
def history_delete( self, trans, id=None, **kwd):
@@ -368,16 +364,16 @@
trans.log_event( "History id %s marked as deleted" % str(hid) )
else:
return trans.show_message( "You must select at least one history to delete." )
- return trans.show_message( "History deleted: %s" % ",".join(history_names),
- refresh_frames=['history'])
+ return trans.show_message( "History deleted: %s" % ",".join(history_names), refresh_frames=['history'] )
@web.expose
def clear_history( self, trans ):
"""Clears the history for a user"""
history = trans.get_history()
- for dataset in history.datasets:
- dataset.deleted = True
- dataset.clear_associated_files()
+ for hda in history.datasets:
+ hda.deleted = True
+ hda.dataset.deleted = True
+ hda.clear_associated_files()
self.app.model.flush()
trans.log_event( "History id %s cleared" % (str(history.id)) )
trans.response.send_redirect( url_for("/index" ) )
@@ -425,9 +421,7 @@
if not isinstance( id, list ):
id = [ id ]
trans.log_event( "History id %s available" % str( id ) )
- return trans.fill_template( "/history/list.mako", ids=id,
- user=trans.get_user(),
- current_history=trans.get_history() )
+ return trans.fill_template( "/history/list.mako", ids=id, user=trans.get_user(), current_history=trans.get_history() )
@web.expose
def history_import( self, trans, id=None, confirm=False, **kwd ):
@@ -553,23 +547,23 @@
"""Adds a POSTed file to a History"""
try:
history = trans.app.model.History.get( history_id )
- data = trans.app.model.HistoryDatasetAssociation( name = name, info = info, extension = ext, dbkey = dbkey, create_dataset = True )
- data.flush()
- data_file = open( data.file_name, "wb" )
+ hda = trans.app.model.HistoryDatasetAssociation( name=name, info=info, extension=ext, dbkey=dbkey, create_dataset=True )
+ hda.flush()
+ data_file = open( hda.file_name, "wb" )
file_data.file.seek( 0 )
data_file.write( file_data.file.read() )
data_file.close()
- data.state = data.states.OK
- data.init_meta()
- data.set_meta()
- data.flush()
- history.add_dataset( data )
+ hda.dataset.state = hda.dataset.states.OK
+ hda.init_meta()
+ hda.set_meta()
+ hda.flush()
+ history.add_dataset( hda )
history.flush()
- data.set_peek()
- data.set_size()
- data.flush()
- trans.log_event("Added dataset %d to history %d" %(data.id, trans.history.id))
- return trans.show_ok_message("Dataset "+str(data.hid)+" added to history "+str(history_id)+".")
+ hda.set_peek()
+ hda.set_size()
+ hda.flush()
+ trans.log_event( "Added dataset id '%s' to history id '%s'." % ( str( hda.dataset_id ), str( history_id ) ) )
+ return trans.show_ok_message( "Dataset id " + str( hda.dataset_id ) + " added to history id " + str( history_id ) + "." )
except:
return trans.show_error_message("Adding File to History has Failed")
@@ -577,13 +571,11 @@
def dataset_make_primary( self, trans, id=None):
"""Copies a dataset and makes primary"""
try:
- old_data = self.app.model.HistoryDatasetAssociation.get( id )
- new_data = old_data.copy()
- ## new_data.parent = None
- ## history = trans.app.model.History.get( old_data.history_id )
+ old_hda = self.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
+ new_hda = old_hda.copy()
history = trans.get_history()
- history.add_dataset(new_data)
- new_data.flush()
+ history.add_dataset( new_hda )
+ new_hda.flush()
return trans.show_message( "<p>Secondary dataset has been made primary.</p>", refresh_frames=['history'] )
except:
return trans.show_error_message( "<p>Failed to make secondary dataset primary.</p>" )
@@ -603,7 +595,7 @@
@web.expose
def dataset_errors( self, trans, id=None, **kwd ):
"""View/fix errors associated with dataset"""
- data = trans.app.model.HistoryDatasetAssociation.get( id )
+ hda = trans.app.model.HistoryDatasetAssociation.filter_by( dataset_id=id ).first()
p = kwd
if p.get("fix_errors", None):
# launch tool to create new, (hopefully) error free dataset
@@ -611,18 +603,19 @@
tool_params["tool_id"] = 'fix_errors'
tool_params["runtool_btn"] = 'T'
tool_params["input"] = id
- tool_params["ext"] = data.ext
+ tool_params["ext"] = hda.ext
# send methods selected
- repair_methods = data.datatype.repair_methods( data )
+ repair_methods = hda.datatype.repair_methods( hda )
methods = []
for method, description in repair_methods:
- if method in p: methods.append(method)
+ if method in p:
+ methods.append( method )
tool_params["methods"] = ",".join(methods)
url = "/tool_runner/index?" + urllib.urlencode(tool_params)
trans.response.send_redirect(url)
else:
- history = trans.app.model.History.get( data.history_id )
- return trans.fill_template('dataset/validation.tmpl', data=data, history=history)
+ history = trans.app.model.History.get( hda.history_id )
+ return trans.fill_template('dataset/validation.tmpl', data=hda, history=history)
# ---- Debug methods ----------------------------------------------------