hydrators.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. def hydrate_string(dry_value):
  2. return unicode(dry_value) if dry_value else ''
  3. def dehydrate_string(wet_value):
  4. return wet_value
  5. def hydrate_bool(dry_value):
  6. return dry_value == 'True'
  7. def dehydrate_bool(wet_value):
  8. return 'True' if wet_value else 'False'
  9. def hydrate_int(dry_value):
  10. return int(dry_value)
  11. def dehydrate_int(wet_value):
  12. return unicode(wet_value)
  13. def hydrate_list(dry_value):
  14. return [x for x in dry_value.split(',') if x]
  15. def dehydrate_list(wet_value):
  16. return ','.join(wet_value)
  17. VALUE_HYDRATORS = {
  18. 'string': (hydrate_string, dehydrate_string),
  19. 'bool': (hydrate_bool, dehydrate_bool),
  20. 'int': (hydrate_int, dehydrate_int),
  21. 'list': (hydrate_list, dehydrate_list),
  22. }
  23. def hydrate_value(python_type, dry_value):
  24. try:
  25. value_hydrator = VALUE_HYDRATORS[python_type][0]
  26. except KeyError:
  27. raise ValueError("%s type is not hydrateable" % python_type)
  28. return value_hydrator(dry_value)
  29. def dehydrate_value(python_type, wet_value):
  30. try:
  31. value_dehydrator = VALUE_HYDRATORS[python_type][1]
  32. except KeyError:
  33. raise ValueError("%s type is not dehydrateable" % python_type)
  34. return value_dehydrator(wet_value)