0
|
1 # runs after the job (and after the default post-filter)
|
|
2
|
|
3 import pkg_resources
|
|
4 pkg_resources.require( "bx-python" )
|
|
5
|
|
6 from galaxy import datatypes, jobs, util
|
|
7 # needed to reference ParseError types, is this bad?
|
|
8 from bx.tabular.io import *
|
|
9 from bx.intervals.io import *
|
|
10 import sys, tempfile, os
|
|
11
|
|
12 def validate(incoming):
|
|
13 """Validator"""
|
|
14 #raise Exception, 'not quite right'
|
|
15 pass
|
|
16
|
|
17 def exec_before_job( app, inp_data, out_data, param_dict, tool=None):
|
|
18 """Build a temp file with errors in it"""
|
|
19 errors = []
|
|
20 for name, data in inp_data.items():
|
|
21 validation_errors = data.validation_errors
|
|
22 for error in validation_errors:
|
|
23 # build dummy class
|
|
24 try:
|
|
25 temp = eval(error.err_type)()
|
|
26 except:
|
|
27 temp = object()
|
|
28 # stuff attributes
|
|
29 temp.__dict__ = util.string_to_object( error.attributes )
|
|
30 errors.append(temp)
|
|
31 # There *should* only be 1 input, so we assume there is and continue
|
|
32 # base64 pickel
|
|
33 errors_str = util.object_to_string( errors )
|
|
34 # write
|
|
35 database_tmp = "./database/tmp" # globaly visible path
|
|
36 error_file = tempfile.NamedTemporaryFile(mode="w", dir=database_tmp, suffix=".b64")
|
|
37 error_file_name = error_file.name
|
|
38 error_file.close()
|
|
39 error_file = open(error_file_name, "w")
|
|
40 error_file.write(errors_str)
|
|
41 error_file.close()
|
|
42 param_dict["errorsfile"] = error_file_name
|
|
43
|
|
44
|
|
45 def exec_after_process( app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
|
|
46 # in a perfect world, changes to param_dict would persist
|
|
47 # for now, unlink from tool
|
|
48 # os.unlink(param_dict["errorsfile"])
|
|
49 pass
|