diff tools/validation/fix_errors_code.py @ 0:9071e359b9a3

Uploaded
author xuebing
date Fri, 09 Mar 2012 19:37:19 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/validation/fix_errors_code.py	Fri Mar 09 19:37:19 2012 -0500
@@ -0,0 +1,49 @@
+# runs after the job (and after the default post-filter)
+
+import pkg_resources
+pkg_resources.require( "bx-python" )
+
+from galaxy import datatypes, jobs, util
+# needed to reference ParseError types, is this bad?
+from bx.tabular.io import *
+from bx.intervals.io import *
+import sys, tempfile, os
+
+def validate(incoming):
+    """Validator"""
+    #raise Exception, 'not quite right'
+    pass
+
+def exec_before_job( app, inp_data, out_data, param_dict, tool=None):
+    """Build a temp file with errors in it"""
+    errors = []
+    for name, data in inp_data.items():
+        validation_errors = data.validation_errors
+        for error in validation_errors:
+            # build dummy class
+            try:
+                temp = eval(error.err_type)()
+            except:
+                temp = object()
+            # stuff attributes
+            temp.__dict__ = util.string_to_object( error.attributes )
+            errors.append(temp)
+    # There *should* only be 1 input, so we assume there is and continue
+    # base64 pickel
+    errors_str = util.object_to_string( errors )
+    # write
+    database_tmp = "./database/tmp" # globaly visible path
+    error_file = tempfile.NamedTemporaryFile(mode="w", dir=database_tmp, suffix=".b64")
+    error_file_name = error_file.name
+    error_file.close()
+    error_file = open(error_file_name, "w")
+    error_file.write(errors_str)
+    error_file.close()
+    param_dict["errorsfile"] = error_file_name
+    
+    
+def exec_after_process( app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
+    # in a perfect world, changes to param_dict would persist
+    # for now, unlink from tool
+    # os.unlink(param_dict["errorsfile"])
+    pass