diff options
Diffstat (limited to 'opendc/util/parameter_checker.py')
| -rw-r--r-- | opendc/util/parameter_checker.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/opendc/util/parameter_checker.py b/opendc/util/parameter_checker.py index 32cd6777..5188e56a 100644 --- a/opendc/util/parameter_checker.py +++ b/opendc/util/parameter_checker.py @@ -1,21 +1,22 @@ from opendc.util import database, exceptions + def _missing_parameter(params_required, params_actual, parent=''): """Recursively search for the first missing parameter.""" for param_name in params_required: - + if not param_name in params_actual: return '{}.{}'.format(parent, param_name) param_required = params_required.get(param_name) - param_actual = params_actual.get(param_name) + param_actual = params_actual.get(param_name) if isinstance(param_required, dict): - + param_missing = _missing_parameter( - param_required, - param_actual, + param_required, + param_actual, param_name ) @@ -24,13 +25,14 @@ def _missing_parameter(params_required, params_actual, parent=''): return None + def _incorrect_parameter(params_required, params_actual, parent=''): """Recursively make sure each parameter is of the correct type.""" for param_name in params_required: param_required = params_required.get(param_name) - param_actual = params_actual.get(param_name) + param_actual = params_actual.get(param_name) if isinstance(param_required, dict): @@ -60,6 +62,7 @@ def _incorrect_parameter(params_required, params_actual, parent=''): if param_required.startswith('list') and not isinstance(param_actual, list): return '{}.{}'.format(parent, param_name) + def _format_parameter(parameter): """Format the output of a parameter check.""" @@ -67,11 +70,12 @@ def _format_parameter(parameter): inner = ['["{}"]'.format(x) for x in parts[2:]] return parts[1] + ''.join(inner) + def check(request, **kwargs): """Return True if all required parameters are there.""" for location, params_required in kwargs.iteritems(): - + params_actual = getattr(request, 'params_{}'.format(location)) missing_parameter = _missing_parameter(params_required, params_actual) @@ -79,7 +83,7 @@ def check(request, **kwargs): raise exceptions.MissingParameterError( _format_parameter(missing_parameter), location - ) + ) incorrect_parameter = _incorrect_parameter(params_required, params_actual) if incorrect_parameter is not None: @@ -87,4 +91,3 @@ def check(request, **kwargs): _format_parameter(incorrect_parameter), location ) - |
