Use shared safe loads to load module states

This commit is contained in:
guerler
2016-12-11 23:26:34 -05:00
parent 34f5506080
commit f9abb47ebd
4 changed files with 19 additions and 16 deletions
+5 -9
View File
@@ -34,6 +34,7 @@ from galaxy.util import (directory_hash_id, Params, ready_name_for_url,
from galaxy.util.bunch import Bunch
from galaxy.util.dictifiable import Dictifiable
from galaxy.util.hash_util import new_secure_hash
from galaxy.util.json import safe_loads
from galaxy.util.multi_byte import is_multi_byte
from galaxy.util.sanitize_html import sanitize_html
from galaxy.web.form_builder import (AddressField, CheckboxField, HistoryField,
@@ -3757,16 +3758,11 @@ class WorkflowStep( object ):
@property
def name( self ):
identifier = None
state = self.tool_inputs
if isinstance( self.tool_inputs, string_types ):
state = json.loads( state )
identifier = state.get( 'name' )
try:
identifier = json.loads( identifier )
except:
pass
return identifier
if state:
state = safe_loads( state )
identifier = state.get( 'name' )
return safe_loads( identifier )
@property
def input_connections_by_name(self):
+2 -3
View File
@@ -55,6 +55,7 @@ from galaxy.tools.parameters.meta import expand_meta_parameters
from galaxy.util.bunch import Bunch
from galaxy.util.expressions import ExpressionContext
from galaxy.util.json import json_fix
from galaxy.util.json import safe_loads
from galaxy.util.odict import odict
from galaxy.util.template import fill_template
from galaxy.web import url_for
@@ -263,9 +264,7 @@ class DefaultToolState( object ):
"""
Restore the state from a string
"""
if isinstance( values, basestring ):
values = json_fix( json.loads( values ) )
values = values or {}
values = json_fix( safe_loads( values ) ) or {}
self.page = values.pop( "__page__" ) if "__page__" in values else None
self.rerun_remap_job_id = values.pop( "__rerun_remap_job_id__" ) if "__rerun_remap_job_id__" in values else None
self.inputs = params_from_strings( tool.inputs, values, app, ignore_errors=True )
+2 -4
View File
@@ -6,6 +6,7 @@ from json import dumps, loads
from galaxy.util.expressions import ExpressionContext
from galaxy.util.json import json_fix
from galaxy.util.json import safe_loads
from .basic import DataCollectionToolParameter, DataToolParameter, RuntimeValue, SelectToolParameter
from .grouping import Conditional, Repeat, Section, UploadDataset
@@ -161,10 +162,7 @@ def params_from_strings( params, param_values, app, ignore_errors=False ):
rval = dict()
param_values = param_values or {}
for key, value in param_values.items():
try:
value = json_fix( loads( value ) )
except ValueError:
pass
value = json_fix( safe_loads( value ) )
if key in params:
value = params[ key ].value_from_basic( value, app, ignore_errors )
rval[ key ] = value
+10
View File
@@ -52,6 +52,16 @@ def swap_inf_nan( val ):
else:
return val
def safe_loads( arg ):
"""
This is a wrapper around loads that returns the parsed value instead of
raising a value error.
"""
try:
loaded = json.loads( arg )
except ( TypeError, ValueError ):
loaded = arg
return loaded
def safe_dumps( *args, **kwargs ):
"""