Source code for graphene_elastic.types.json_string

import datetime
import json

from elasticsearch_dsl import InnerDoc, Document, AttrDict, AttrList
from graphene.types.json import JSONString as OriginalJSONString

__title__ = 'graphene_elastic.types.json_string'
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2019 Artur Barseghyan'
__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
__all__ = (
    'JSONString',
    'to_serializable',
)


[docs]def to_serializable(o): if isinstance(o, (datetime.date, datetime.datetime)): return o.isoformat() elif isinstance(o, (InnerDoc, Document)): return o.to_dict() elif isinstance(o, AttrList): return [to_serializable(_l) for _l in o._l_] elif isinstance(o, AttrDict): return o.to_dict() elif isinstance(o, list): return [to_serializable(_l) for _l in o] return o
[docs]class JSONString(OriginalJSONString):
[docs] @staticmethod def serialize(dt): # return to_serializable(dt) return json.loads(json.dumps(dt, default=to_serializable))