summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorDaniyal Abbasi <abbasi.daniyal98@gmail.com>2021-09-02 11:15:40 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-09-02 11:24:55 +0200
commitdca4c2ff764ab94848274952eee4319a638be1d2 (patch)
tree83d32e92a738a32dfc9bb9b8e947eb12d65872e6 /django
parent50ed545e2fa02c51e0d1559b83624f256e4b499b (diff)
Refs #33012 -- Moved PickleSerializer to django.core.serializers.base and added tests.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/sessions/serializers.py21
-rw-r--r--django/core/serializers/base.py16
2 files changed, 20 insertions, 17 deletions
diff --git a/django/contrib/sessions/serializers.py b/django/contrib/sessions/serializers.py
index 6ac4aab6a4..5b6c343daa 100644
--- a/django/contrib/sessions/serializers.py
+++ b/django/contrib/sessions/serializers.py
@@ -1,20 +1,7 @@
-import pickle
-
+from django.core.serializers.base import (
+ PickleSerializer as BasePickleSerializer,
+)
from django.core.signing import JSONSerializer as BaseJSONSerializer
-
-class PickleSerializer:
- """
- Simple wrapper around pickle to be used in signing.dumps and
- signing.loads.
- """
- protocol = pickle.HIGHEST_PROTOCOL
-
- def dumps(self, obj):
- return pickle.dumps(obj, self.protocol)
-
- def loads(self, data):
- return pickle.loads(data)
-
-
JSONSerializer = BaseJSONSerializer
+PickleSerializer = BasePickleSerializer
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index 3fee7893df..3bd492ec09 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -1,6 +1,7 @@
"""
Module for abstract serializer/unserializer base classes.
"""
+import pickle
from io import StringIO
from django.core.exceptions import ObjectDoesNotExist
@@ -9,6 +10,21 @@ from django.db import models
DEFER_FIELD = object()
+class PickleSerializer:
+ """
+ Simple wrapper around pickle to be used in signing.dumps()/loads() and
+ cache backends.
+ """
+ def __init__(self, protocol=None):
+ self.protocol = pickle.HIGHEST_PROTOCOL if protocol is None else protocol
+
+ def dumps(self, obj):
+ return pickle.dumps(obj, self.protocol)
+
+ def loads(self, data):
+ return pickle.loads(data)
+
+
class SerializerDoesNotExist(KeyError):
"""The requested serializer was not found."""
pass