import datetime from typing import Any from flask.json import JSONEncoder as Base from pycs.database.util.JSONEncoder import JSONEncoder as DatabaseEncoder from pycs.jobs.util.JSONEncoder import JSONEncoder as JobsEncoder class JSONEncoder(Base): """ prepares job and DB objects to be json encoded """ def default(self, o: Any) -> Any: module = o.__class__.__module__ if module.startswith('pycs.database'): return DatabaseEncoder().default(o) if module.startswith('pycs.jobs'): return JobsEncoder().default(o) if isinstance(o, datetime.datetime): return str(o) if isinstance(o, dict): return o return o.__dict__