JSONEncoder.py 738 B

123456789101112131415161718192021222324252627282930313233
  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 Database
  5. from pycs.jobs.util.JSONEncoder import JSONEncoder as Jobs
  6. class JSONEncoder(Base):
  7. """
  8. prepares job 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 Database().default(o)
  14. if module.startswith('pycs.jobs'):
  15. return Jobs().default(o)
  16. if isinstance(o, datetime.datetime):
  17. return str(o)
  18. try:
  19. return o.__dict__
  20. except:
  21. import pdb; pdb.set_trace()
  22. raise