Convert formatting tags to json

This commit is contained in:
Tim Bentley 2013-06-24 17:21:46 +01:00
parent d32ece04a5
commit 32c7663a45
3 changed files with 13 additions and 6 deletions

View File

@ -30,6 +30,7 @@
Provide HTML Tag management and Formatting Tag access class
"""
import cPickle
import json
from openlp.core.lib import Settings, translate
@ -66,7 +67,8 @@ class FormattingTags(object):
if isinstance(tag[element], unicode):
tag[element] = tag[element].encode('utf8')
# Formatting Tags were also known as display tags.
Settings().setValue(u'displayTags/html_tags', cPickle.dumps(tags) if tags else u'')
Settings().setValue(u'displayTags/html_tags', json.dumps(tags) if tags else u'')
Settings().setValue(u'displayTags/html_tags_json', True)
@staticmethod
def load_tags():
@ -159,10 +161,14 @@ class FormattingTags(object):
# Formatting Tags were also known as display tags.
user_expands = Settings().value(u'displayTags/html_tags')
user_format_json = Settings().value(u'displayTags/html_tags_json')
# cPickle only accepts str not unicode strings
user_expands_string = str(user_expands)
if user_expands_string:
user_tags = cPickle.loads(user_expands_string)
if user_format_json:
user_tags = json.loads(user_expands_string)
else:
user_tags = cPickle.loads(user_expands_string)
for tag in user_tags:
for element in tag:
if isinstance(tag[element], str):

View File

@ -116,6 +116,7 @@ class Settings(QtCore.QSettings):
u'advanced/x11 bypass wm': X11_BYPASS_DEFAULT,
u'crashreport/last directory': u'',
u'displayTags/html_tags': u'',
u'displayTags/html_tags_json': False,
u'core/audio repeat list': False,
u'core/auto open': False,
u'core/auto preview': False,

View File

@ -33,11 +33,11 @@ class TestFormattingTags(TestCase):
"""
with patch(u'openlp.core.lib.translate') as mocked_translate, \
patch(u'openlp.core.lib.settings') as mocked_settings, \
patch(u'openlp.core.lib.formattingtags.cPickle') as mocked_cPickle:
patch(u'openlp.core.lib.formattingtags.json') as mocked_json:
# GIVEN: Our mocked modules and functions.
mocked_translate.side_effect = lambda module, string_to_translate, comment: string_to_translate
mocked_settings.value.return_value = u''
mocked_cPickle.load.return_value = []
mocked_json.load.return_value = []
# WHEN: Get the display tags.
FormattingTags.load_tags()
@ -54,11 +54,11 @@ class TestFormattingTags(TestCase):
"""
with patch(u'openlp.core.lib.translate') as mocked_translate, \
patch(u'openlp.core.lib.settings') as mocked_settings, \
patch(u'openlp.core.lib.formattingtags.cPickle') as mocked_cPickle:
patch(u'openlp.core.lib.formattingtags.json') as mocked_json:
# GIVEN: Our mocked modules and functions.
mocked_translate.side_effect = lambda module, string_to_translate: string_to_translate
mocked_settings.value.return_value = u''
mocked_cPickle.loads.side_effect = [[], [TAG]]
mocked_json.loads.side_effect = [[], [TAG]]
# WHEN: Get the display tags.
FormattingTags.load_tags()