Replace use of pickle for D'nD in the tag browser

This commit is contained in:
Kovid Goyal 2019-03-15 11:50:31 +05:30
parent 046f43446e
commit fc61fc88bc
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 10 additions and 7 deletions

View file

@ -8,7 +8,7 @@
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
import traceback, cPickle, copy, os
import traceback, copy, os
from collections import OrderedDict
from PyQt5.Qt import (QAbstractItemModel, QIcon, QFont, Qt,
@ -24,6 +24,8 @@
from calibre.gui2.dialogs.confirm_delete import confirm
from calibre.utils.formatter import EvalFormatter
from polyglot.builtins import range
from calibre.utils.serialize import json_dumps, json_loads
TAG_SEARCH_STATES = {'clear': 0, 'mark_plus': 1, 'mark_plusplus': 2,
'mark_minus': 3, 'mark_minusminus': 4}
@ -740,7 +742,7 @@ def mimeData(self, indexes):
data.append(d)
else:
data.append(None)
raw = bytearray(cPickle.dumps(data, -1))
raw = bytearray(json_dumps(data))
ans = QMimeData()
ans.setData('application/calibre+from_tag_browser', raw)
return ans
@ -764,8 +766,8 @@ def do_drop_from_tag_browser(self, md, action, row, column, parent):
return False
if not md.hasFormat('application/calibre+from_tag_browser'):
return False
data = str(md.data('application/calibre+from_tag_browser'))
src = cPickle.loads(data)
data = bytes(md.data('application/calibre+from_tag_browser'))
src = json_loads(data)
for s in src:
if s[0] != TagTreeItem.TAG:
return False

View file

@ -7,7 +7,7 @@
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
import cPickle, os, re
import os, re
from functools import partial
from itertools import izip
@ -24,6 +24,7 @@
TagsModel, DRAG_IMAGE_ROLE, COUNT_ROLE)
from calibre.gui2 import config, gprefs, choose_files, pixmap_to_data, rating_font, empty_index
from calibre.utils.icu import sort_key
from calibre.utils.serialize import json_loads
from polyglot.builtins import unicode_type, range
@ -751,8 +752,8 @@ def dragMoveEvent(self, event):
if fm_dest['kind'] == 'user':
if src_is_tb:
if event.dropAction() == Qt.MoveAction:
data = str(event.mimeData().data('application/calibre+from_tag_browser'))
src = cPickle.loads(data)
data = bytes(event.mimeData().data('application/calibre+from_tag_browser'))
src = json_loads(data)
for s in src:
if s[0] == TagTreeItem.TAG and \
(not s[1].startswith('@') or s[2]):