Changeset 1602:531be9ea2486
- Timestamp:
- 11/04/08 11:56:09
(2 months ago)
- Author:
- Greg Von Kuster <greg@bx.psu.edu>
- branch:
- default
- Message:
Upload tool will now create a job record, no job queued though.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r1591 |
r1602 |
|
| 26 | 26 | temp_name = "" |
|---|
| 27 | 27 | data_list = [] |
|---|
| 28 | | |
|---|
| | 28 | # Create the job object |
|---|
| | 29 | job = trans.app.model.Job() |
|---|
| | 30 | job.session_id = trans.get_galaxy_session().id |
|---|
| | 31 | job.history_id = trans.history.id |
|---|
| | 32 | job.tool_id = tool.id |
|---|
| | 33 | try: |
|---|
| | 34 | # For backward compatibility, some tools may not have versions yet. |
|---|
| | 35 | job.tool_version = tool.version |
|---|
| | 36 | except: |
|---|
| | 37 | job.tool_version = "1.0.0" |
|---|
| | 38 | job.flush() |
|---|
| | 39 | log.debug( 'tool %s created job id %d' % ( tool.id, job.id ) ) |
|---|
| | 40 | trans.log_event( 'created job id %d' % job.id, tool_id=tool.id ) |
|---|
| 29 | 41 | if 'local_filename' in dir( data_file ): |
|---|
| 30 | 42 | # Use the existing file |
|---|
| … | … | |
| 35 | 47 | data_list.append( self.add_file( trans, data_file.local_filename, file_name, file_type, dbkey, space_to_tab=space_to_tab ) ) |
|---|
| 36 | 48 | except Exception, e: |
|---|
| 37 | | return self.upload_empty( trans, "Error:", str( e ) ) |
|---|
| | 49 | return self.upload_empty( trans, job, "Error:", str( e ) ) |
|---|
| 38 | 50 | elif 'filename' in dir( data_file ): |
|---|
| 39 | 51 | try: |
|---|
| … | … | |
| 44 | 56 | data_list.append( self.add_file( trans, temp_name, file_name, file_type, dbkey, space_to_tab=space_to_tab ) ) |
|---|
| 45 | 57 | except Exception, e: |
|---|
| 46 | | return self.upload_empty( trans, "Error:", str( e ) ) |
|---|
| | 58 | return self.upload_empty( trans, job, "Error:", str( e ) ) |
|---|
| 47 | 59 | if url_paste not in [ None, "" ]: |
|---|
| 48 | 60 | if url_paste.lower().find( 'http://' ) >= 0 or url_paste.lower().find( 'ftp://' ) >= 0: |
|---|
| … | … | |
| 55 | 67 | data_list.append( self.add_file( trans, temp_name, line, file_type, dbkey, info="uploaded url", space_to_tab=space_to_tab ) ) |
|---|
| 56 | 68 | except Exception, e: |
|---|
| 57 | | return self.upload_empty( trans, "Error:", str( e ) ) |
|---|
| | 69 | return self.upload_empty( trans, job, "Error:", str( e ) ) |
|---|
| 58 | 70 | else: |
|---|
| 59 | 71 | is_valid = False |
|---|
| … | … | |
| 68 | 80 | data_list.append( self.add_file( trans, temp_name, 'Pasted Entry', file_type, dbkey, info="pasted entry", space_to_tab=space_to_tab ) ) |
|---|
| 69 | 81 | except Exception, e: |
|---|
| 70 | | return self.upload_empty( trans, "Error:", str( e ) ) |
|---|
| | 82 | return self.upload_empty( trans, job, "Error:", str( e ) ) |
|---|
| 71 | 83 | else: |
|---|
| 72 | | return self.upload_empty( trans, "No data error:", "you pasted no data." ) |
|---|
| | 84 | return self.upload_empty( trans, job, "No data error:", "you pasted no data." ) |
|---|
| 73 | 85 | if self.empty: |
|---|
| 74 | | return self.upload_empty( trans, "Empty file error:", "you attempted to upload an empty file." ) |
|---|
| | 86 | return self.upload_empty( trans, job, "Empty file error:", "you attempted to upload an empty file." ) |
|---|
| 75 | 87 | elif len( data_list ) < 1: |
|---|
| 76 | | return self.upload_empty( trans, "No data error:", "either you pasted no data, the url you specified is invalid, or you have not specified a file." ) |
|---|
| 77 | | return dict( output=data_list[0] ) |
|---|
| 78 | | |
|---|
| 79 | | def upload_empty(self, trans, err_code, err_msg): |
|---|
| | 88 | return self.upload_empty( trans, job, "No data error:", "either you pasted no data, the url you specified is invalid, or you have not specified a file." ) |
|---|
| | 89 | hda = data_list[0] |
|---|
| | 90 | job.state = trans.app.model.Job.states.OK |
|---|
| | 91 | file_size_str = nice_size( hda.dataset.file_size ) |
|---|
| | 92 | job.info = "Uploaded file '%s', size: %s" % ( file_name, file_size_str ) |
|---|
| | 93 | job.flush() |
|---|
| | 94 | log.debug( 'tool %s job id %d ended ok, file: %s, size: %s' % ( tool.id, job.id, file_name, file_size_str ) ) |
|---|
| | 95 | trans.log_event( 'job id %d ended ok, file: %s, size: %s' % ( job.id, file_name, file_size_str ), tool_id=tool.id ) |
|---|
| | 96 | return dict( output=hda ) |
|---|
| | 97 | |
|---|
| | 98 | def upload_empty(self, trans, job, err_code, err_msg): |
|---|
| 80 | 99 | data = trans.app.model.HistoryDatasetAssociation( create_dataset = True ) |
|---|
| 81 | 100 | data.name = err_code |
|---|
| … | … | |
| 84 | 103 | data.info = err_msg |
|---|
| 85 | 104 | data.file_size = 0 |
|---|
| | 105 | data.state = data.states.EMPTY |
|---|
| 86 | 106 | data.flush() |
|---|
| 87 | | data.state = data.states.EMPTY |
|---|
| 88 | 107 | trans.history.add_dataset( data ) |
|---|
| 89 | 108 | trans.app.model.flush() |
|---|
| | 109 | # Indicate job failure by setting state and message |
|---|
| | 110 | job.state = trans.app.model.Job.states.ERROR |
|---|
| | 111 | job.info = err_msg |
|---|
| | 112 | # If the failure is due to a Galaxy framework exception, save the traceback |
|---|
| | 113 | job.flush() |
|---|
| | 114 | log.debug( 'tool %s job id %d ended with errors' % ( job.tool_id, job.id ) ) |
|---|
| | 115 | trans.log_event( 'job id %d ended with errors' % job.id, tool_id=job.tool_id ) |
|---|
| 90 | 116 | return dict( output=data ) |
|---|
| 91 | 117 | |
|---|
| … | … | |
| 276 | 302 | return False |
|---|
| 277 | 303 | |
|---|
| | 304 | def nice_size( size ): |
|---|
| | 305 | """Returns a readably formatted string with the size""" |
|---|
| | 306 | words = [ 'bytes', 'Kb', 'Mb', 'Gb' ] |
|---|
| | 307 | try: |
|---|
| | 308 | size = float( size ) |
|---|
| | 309 | except: |
|---|
| | 310 | return '??? bytes' |
|---|
| | 311 | for ind, word in enumerate( words ): |
|---|
| | 312 | step = 1024 ** ( ind + 1 ) |
|---|
| | 313 | if step > size: |
|---|
| | 314 | size = size / float( 1024 ** ind ) |
|---|
| | 315 | out = "%.1f %s" % ( size, word ) |
|---|
| | 316 | return out |
|---|
| | 317 | return '??? bytes' |
|---|
| | 318 | |
|---|
| 278 | 319 | class BadFileException( Exception ): |
|---|
| 279 | 320 | pass |
|---|