28 lines
818 B
Python
28 lines
818 B
Python
|
# -*- coding: utf-8 -*-
|
||
|
# bthlabs-jsonrpc-django | (c) 2022-present Tomek Wójcik | MIT License
|
||
|
from __future__ import annotations
|
||
|
|
||
|
import typing
|
||
|
|
||
|
from bthlabs_jsonrpc_core import JSONCodec
|
||
|
from django.core.serializers.json import DjangoJSONEncoder
|
||
|
|
||
|
|
||
|
class DjangoJSONCodec(JSONCodec):
|
||
|
"""Django-specific JSON codec"""
|
||
|
|
||
|
# pragma mark - Public interface
|
||
|
|
||
|
def encode(self, payload: typing.Any, **encoder_kwargs) -> str:
|
||
|
"""
|
||
|
Before handing off control to the superclass, this method will default
|
||
|
the *cls* encoder kwarg to
|
||
|
:py:class:`django.core.serializers.json.DjangoJSONEncoder`.
|
||
|
"""
|
||
|
effective_encoder_kwargs = {
|
||
|
'cls': DjangoJSONEncoder,
|
||
|
**encoder_kwargs,
|
||
|
}
|
||
|
|
||
|
return super().encode(payload, **effective_encoder_kwargs)
|