Source code for bookkeeping.helper

"""
helper.py
=========
Helper functions for the bookkeeper service.
"""

import datetime
import json
# Standard python includes
from typing import Any

# Starlette-related includes
from starlette.responses import JSONResponse


[docs]class CustomJSONEncoder(json.JSONEncoder):
[docs] def default(self, obj): if isinstance(obj, datetime.datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") elif isinstance(obj, datetime.date): return obj.strftime("%Y-%m-%d") else: try: dict_ = dict(obj) except TypeError: pass else: return dict_ return super(CustomJSONEncoder, self).default(obj)
[docs]class CustomJSONResponse(JSONResponse):
[docs] def render(self, content: Any) -> bytes: return json.dumps(content, cls=CustomJSONEncoder).encode("utf-8")