32 lines
852 B
Python
32 lines
852 B
Python
|
|
import json
|
|
|
|
from django.core.serializers.json import DjangoJSONEncoder
|
|
from django_redis.pool import ConnectionFactory as Factory
|
|
from django_redis.serializers.base import BaseSerializer
|
|
|
|
|
|
class JSONSerializer(BaseSerializer):
|
|
"""
|
|
The default JSON serializer of django-redis assumes `decode_responses`
|
|
is disabled, and calls `decode()` and `encode()` on the value.
|
|
This serializer does not.
|
|
"""
|
|
|
|
def dumps(self, value):
|
|
return json.dumps(value, cls=DjangoJSONEncoder)
|
|
|
|
def loads(self, value):
|
|
return json.loads(value)
|
|
|
|
|
|
class ConnectionFactory(Factory):
|
|
"""
|
|
Custom ConnectionFactory that injects the decode_responses parameter.
|
|
"""
|
|
|
|
def make_connection_params(self, url):
|
|
kwargs = super().make_connection_params(url)
|
|
kwargs["decode_responses"] = True
|
|
return kwargs
|
|
|