A multipurpose python flask API server and administration SPA
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
633 B

  1. """JSON specific utilities."""
  2. from datetime import date
  3. from typing import Any
  4. import rfc3339
  5. from flask.json import JSONEncoder
  6. class CustomJSONEncoder(JSONEncoder):
  7. """Ensure that datetime values are serialized correctly."""
  8. def default(self, o: Any) -> Any: # pylint: disable=E0202
  9. """Handle encoding date and datetime objects according to rfc3339."""
  10. try:
  11. if isinstance(o, date):
  12. return rfc3339.format(o)
  13. iterable = iter(o)
  14. except TypeError:
  15. pass
  16. else:
  17. return list(iterable)
  18. return JSONEncoder.default(self, o)