JSONEncoder.py 735 B

12345678910111213141516171819202122232425262728293031
  1. import datetime
  2. from typing import Any
  3. from flask.json import JSONEncoder as Base
  4. from pycs.database.util.JSONEncoder import JSONEncoder as DatabaseEncoder
  5. from pycs.jobs.util.JSONEncoder import JSONEncoder as JobsEncoder
  6. class JSONEncoder(Base):
  7. """
  8. prepares job and DB objects to be json encoded
  9. """
  10. def default(self, o: Any) -> Any:
  11. module = o.__class__.__module__
  12. if module.startswith('pycs.database'):
  13. return DatabaseEncoder().default(o)
  14. if module.startswith('pycs.jobs'):
  15. return JobsEncoder().default(o)
  16. if isinstance(o, datetime.datetime):
  17. return str(o)
  18. if isinstance(o, dict):
  19. return o
  20. return o.__dict__