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 @@ __license__ = 'GPL v3'
__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.library.field_metadata import category_icon_map
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 @@ class TagsModel(QAbstractItemModel): # {{{
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 @@ class TagsModel(QAbstractItemModel): # {{{
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 @@ __license__ = 'GPL v3'
__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 @@ from calibre.gui2.tag_browser.model import (TagTreeItem, TAG_SEARCH_STATES,
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 @@ class TagsView(QTreeView): # {{{
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]):