summaryrefslogtreecommitdiff
path: root/opendc/util/parameter_checker.py
diff options
context:
space:
mode:
Diffstat (limited to 'opendc/util/parameter_checker.py')
-rw-r--r--opendc/util/parameter_checker.py21
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
)
-