caffeinatedmike

jsonresume_marshmallow_schema_validation.py

Sep 21st, 2021 (edited)
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1.     def ensure_no_nulls(self, in_data, **kwargs):
  2.         # TODO: Refactor this function to recursively search for None values
  3.         for field, value in in_data.items():
  4.             if value is None:
  5.                 raise ma.ValidationError(f"'{field}' can not be None/null")
  6.             elif isinstance(value, dict):
  7.                 for d_field, d_value in value.items():
  8.                     if isinstance(d_value, dict):
  9.                         for dd_field, dd_value in d_value.items():
  10.                             if dd_value is None:
  11.                                 raise ma.ValidationError(f"'{field}.{d_field}.{dd_field}' can not be None/null")
  12.                     elif isinstance(d_value, list):
  13.                         for y, l_item in enumerate(d_value):
  14.                             if isinstance(l_item, dict):
  15.                                 for dd_field, dd_value in l_item.items():
  16.                                     if dd_value is None:
  17.                                         raise ma.ValidationError(f"'{field}.{d_field}[{y}].{dd_field}' can not be None/null")
  18.                             elif l_item is None:
  19.                                 raise ma.ValidationError(f"'{field}.{d_field}[{y}]' can not be None/null")
  20.                     elif d_value is None:
  21.                         raise ma.ValidationError(f"'{field}.{d_field}' can not be None/null")
  22.             elif isinstance(value, list):
  23.                 for x, l_item in enumerate(value):
  24.                     if isinstance(l_item, dict):
  25.                         for d_field, d_value in l_item.items():
  26.                             if isinstance(d_value, list):
  27.                                 for y, l_item in enumerate(d_value):
  28.                                     if l_item is None:
  29.                                         raise ma.ValidationError(f"'{field}[{x}].{d_field}[{y}]' can not be None/null")
  30.                             elif d_value is None:
  31.                                 raise ma.ValidationError(f"'{field}[{x}].{d_field}' can not be None/null")
  32.                     elif l_item is None:
  33.                         raise ma.ValidationError(f"'{field}[{x}]' can not be None/null")
  34.         return in_data
Add Comment
Please, Sign In to add comment