diff options
Diffstat (limited to 'oauth2client/contrib/django_util/models.py')
-rw-r--r-- | oauth2client/contrib/django_util/models.py | 11 |
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. |