misc: use cPickle only when available (#36515)

This commit is contained in:
Frédéric Péters 2019-11-11 21:58:41 +01:00
parent 650c9c3093
commit 71508015a3
1 changed files with 11 additions and 8 deletions

View File

@ -19,7 +19,10 @@ import psycopg2.extensions
import datetime
import time
import re
import cPickle
try:
import cPickle as pickle
except ImportError:
import pickle
from django.utils.encoding import force_text
from django.utils.six import StringIO
@ -1142,7 +1145,7 @@ class SqlMixin(object):
assert type(value) is time.struct_time
value = datetime.datetime(value.tm_year, value.tm_mon, value.tm_mday)
elif sql_type == 'bytea':
value = bytearray(cPickle.dumps(value, protocol=2))
value = bytearray(pickle.dumps(value, protocol=2))
elif sql_type == 'boolean':
pass
sql_dict[get_field_id(field)] = value
@ -1150,7 +1153,7 @@ class SqlMixin(object):
sql_dict['%s_display' % get_field_id(field)] = data.get('%s_display' % field.id)
if field.store_structured_value:
sql_dict['%s_structured' % get_field_id(field)] = bytearray(
cPickle.dumps(data.get('%s_structured' % field.id), protocol=2))
pickle.dumps(data.get('%s_structured' % field.id), protocol=2))
return sql_dict
@classmethod
@ -1348,7 +1351,7 @@ class SqlDataMixin(SqlMixin):
'user_id': self.user_id,
'status': self.status,
'page_no': self.page_no,
'workflow_data': bytearray(cPickle.dumps(self.workflow_data, protocol=2)),
'workflow_data': bytearray(pickle.dumps(self.workflow_data, protocol=2)),
'id_display': self.id_display,
'anonymised': self.anonymised,
'tracking_code': self.tracking_code,
@ -1366,13 +1369,13 @@ class SqlDataMixin(SqlMixin):
else:
sql_dict['receipt_time'] = None
if self.workflow_roles:
sql_dict['workflow_roles'] = bytearray(cPickle.dumps(self.workflow_roles, protocol=2))
sql_dict['workflow_roles'] = bytearray(pickle.dumps(self.workflow_roles, protocol=2))
sql_dict['workflow_roles_array'] = [str(x) for x in self.workflow_roles.values() if x is not None]
else:
sql_dict['workflow_roles'] = None
sql_dict['workflow_roles_array'] = None
if self.submission_context:
sql_dict['submission_context'] = bytearray(cPickle.dumps(self.submission_context, protocol=2))
sql_dict['submission_context'] = bytearray(pickle.dumps(self.submission_context, protocol=2))
else:
sql_dict['submission_context'] = None
@ -1460,7 +1463,7 @@ class SqlDataMixin(SqlMixin):
'formdata_id': self.id,
})
if evo.parts:
sql_dict['parts'] = bytearray(cPickle.dumps(evo.parts, protocol=2))
sql_dict['parts'] = bytearray(pickle.dumps(evo.parts, protocol=2))
else:
sql_dict['parts'] = None
cur.execute(sql_statement, sql_dict)
@ -1886,7 +1889,7 @@ class Session(SqlMixin, wcs.sessions.BasicSession):
def store(self):
sql_dict = {
'id': self.id,
'session_data': bytearray(cPickle.dumps(self.__dict__, protocol=2)),
'session_data': bytearray(pickle.dumps(self.__dict__, protocol=2)),
# the other fields are stored to run optimized SELECT() against the
# table, they are ignored when loading the data.
'name_identifier': self.name_identifier,