From dca4c2ff764ab94848274952eee4319a638be1d2 Mon Sep 17 00:00:00 2001 From: Daniyal Abbasi Date: Thu, 2 Sep 2021 11:15:40 +0200 Subject: Refs #33012 -- Moved PickleSerializer to django.core.serializers.base and added tests. --- django/contrib/sessions/serializers.py | 21 ++++----------------- django/core/serializers/base.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 17 deletions(-) (limited to 'django') 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 -- cgit v1.3