aboutsummaryrefslogtreecommitdiffstats
path: root/oauth2client/contrib/django_util/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'oauth2client/contrib/django_util/models.py')
-rw-r--r--oauth2client/contrib/django_util/models.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/oauth2client/contrib/django_util/models.py b/oauth2client/contrib/django_util/models.py
index 87e1da7..37cc697 100644
--- a/oauth2client/contrib/django_util/models.py
+++ b/oauth2client/contrib/django_util/models.py
@@ -19,6 +19,7 @@ import pickle
from django.db import models
from django.utils import encoding
+import jsonpickle
import oauth2client
@@ -48,7 +49,12 @@ class CredentialsField(models.Field):
elif isinstance(value, oauth2client.client.Credentials):
return value
else:
- return pickle.loads(base64.b64decode(encoding.smart_bytes(value)))
+ try:
+ return jsonpickle.decode(
+ base64.b64decode(encoding.smart_bytes(value)).decode())
+ except ValueError:
+ return pickle.loads(
+ base64.b64decode(encoding.smart_bytes(value)))
def get_prep_value(self, value):
"""Overrides ``models.Field`` method. This is used to convert
@@ -58,7 +64,8 @@ class CredentialsField(models.Field):
if value is None:
return None
else:
- return encoding.smart_text(base64.b64encode(pickle.dumps(value)))
+ return encoding.smart_text(
+ base64.b64encode(jsonpickle.encode(value).encode()))
def value_to_string(self, obj):
"""Convert the field value from the provided model to a string.