mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 02:04:04 +08:00
Use shared safe loads to load module states
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user