Skip to content

Commit 89b8b9b

Browse files
authored
py38(django 2.2): upgrade django-picklefield to 2.1.0 (#28317)
1 parent 6030313 commit 89b8b9b

File tree

2 files changed

+5
-20
lines changed

2 files changed

+5
-20
lines changed

requirements-base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ croniter==0.3.37
99
dataclasses==0.8; python_version <= '3.6'
1010
datadog==0.29.3
1111
django-crispy-forms==1.8.1
12-
django-picklefield==1.0.0
12+
django-picklefield==2.1.0
1313
Django==2.1.15
1414
djangorestframework==3.11.2
1515
email-reply-parser==0.5.12

src/sentry/db/models/fields/encrypted.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
from django.db.models import CharField, TextField
10-
from picklefield.fields import PickledObject, PickledObjectField, _ObjectWrapper, dbsafe_decode
10+
from picklefield.fields import PickledObjectField
1111

1212
from sentry.db.models.fields.jsonfield import JSONField
1313
from sentry.db.models.utils import Creator
@@ -45,6 +45,8 @@ def to_python(self, value):
4545

4646

4747
class EncryptedPickledObjectField(PickledObjectField):
48+
empty_strings_allowed = True
49+
4850
def get_db_prep_value(self, value, *args, **kwargs):
4951
if isinstance(value, bytes):
5052
value = value.decode("utf-8")
@@ -54,24 +56,7 @@ def get_db_prep_value(self, value, *args, **kwargs):
5456
def to_python(self, value):
5557
if value is not None and isinstance(value, str):
5658
value = decrypt(value)
57-
58-
# The following below is a copypaste of PickledObjectField.to_python of
59-
# v1.0.0 with one change: We re-raise any baseexceptions such as
60-
# signals. 1.0.0 has a bare `except:` which causes issues.
61-
62-
if value is not None:
63-
try:
64-
value = dbsafe_decode(value, self.compress)
65-
except Exception:
66-
# If the value is a definite pickle; and an error is raised in
67-
# de-pickling it should be allowed to propagate.
68-
if isinstance(value, PickledObject):
69-
raise
70-
else:
71-
if isinstance(value, _ObjectWrapper):
72-
return value._obj
73-
74-
return value
59+
return super().to_python(value)
7560

7661

7762
class EncryptedTextField(TextField):

0 commit comments

Comments
 (0)