Files
org-social-relay/app/reactions/renderers.py
2025-12-05 09:13:52 +01:00

28 lines
834 B
Python

from rest_framework.renderers import JSONRenderer
import json
class UTF8JSONRenderer(JSONRenderer):
"""
JSON renderer that preserves UTF-8 characters (like emojis) instead of escaping them.
"""
charset = "utf-8"
def render(self, data, accepted_media_type=None, renderer_context=None):
if data is None:
return bytes()
renderer_context = renderer_context or {}
indent = self.get_indent(accepted_media_type, renderer_context)
if indent is None:
separators = (",", ":")
else:
separators = (",", ": ")
ret = json.dumps(data, ensure_ascii=False, indent=indent, separators=separators)
# Handle invalid surrogate characters by using 'surrogatepass' error handler
return ret.encode("utf-8", errors="surrogatepass")