77
88
99from django .db .models import CharField , TextField
10- from picklefield .fields import PickledObject , PickledObjectField , _ObjectWrapper , dbsafe_decode
10+ from picklefield .fields import PickledObjectField
1111
1212from sentry .db .models .fields .jsonfield import JSONField
1313from sentry .db .models .utils import Creator
@@ -45,6 +45,8 @@ def to_python(self, value):
4545
4646
4747class 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
7762class EncryptedTextField (TextField ):
0 commit comments