forked from openlp/openlp
Fix bug #1387309: Filter out ampersands and angle brackets
This commit is contained in:
parent
8f5f20cb1d
commit
6a67a77240
|
@ -232,6 +232,13 @@ def qmd5_hash(salt, data):
|
||||||
log.debug('qmd5_hash() returning "%s"' % hash_value)
|
log.debug('qmd5_hash() returning "%s"' % hash_value)
|
||||||
return decode(hash_value.data(), 'ascii')
|
return decode(hash_value.data(), 'ascii')
|
||||||
|
|
||||||
|
def clean_button_text(button_text):
|
||||||
|
"""
|
||||||
|
Clean the & and other characters out of button text
|
||||||
|
|
||||||
|
:param button_text: The text to clean
|
||||||
|
"""
|
||||||
|
return button_text.replace('&', '').replace('< ', '').replace(' >', '')
|
||||||
|
|
||||||
from .openlpmixin import OpenLPMixin
|
from .openlpmixin import OpenLPMixin
|
||||||
from .registry import Registry
|
from .registry import Registry
|
||||||
|
|
|
@ -31,7 +31,7 @@ The UI widgets for the first time wizard.
|
||||||
"""
|
"""
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.common import translate, is_macosx
|
from openlp.core.common import translate, is_macosx, clean_button_text
|
||||||
from openlp.core.lib import build_icon
|
from openlp.core.lib import build_icon
|
||||||
from openlp.core.lib.ui import add_welcome_page
|
from openlp.core.lib.ui import add_welcome_page
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ class UiFirstTimeWizard(object):
|
||||||
first_time_wizard.information_label.setText(
|
first_time_wizard.information_label.setText(
|
||||||
translate('OpenLP.FirstTimeWizard', 'This wizard will help you to configure OpenLP for initial use. '
|
translate('OpenLP.FirstTimeWizard', 'This wizard will help you to configure OpenLP for initial use. '
|
||||||
'Click the %s button below to start.') %
|
'Click the %s button below to start.') %
|
||||||
first_time_wizard.buttonText(QtGui.QWizard.NextButton))
|
clean_button_text(first_time_wizard.buttonText(QtGui.QWizard.NextButton)))
|
||||||
self.plugin_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Activate required Plugins'))
|
self.plugin_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Activate required Plugins'))
|
||||||
self.plugin_page.setSubTitle(translate('OpenLP.FirstTimeWizard', 'Select the Plugins you wish to use. '))
|
self.plugin_page.setSubTitle(translate('OpenLP.FirstTimeWizard', 'Select the Plugins you wish to use. '))
|
||||||
self.songs_check_box.setText(translate('OpenLP.FirstTimeWizard', 'Songs'))
|
self.songs_check_box.setText(translate('OpenLP.FirstTimeWizard', 'Songs'))
|
||||||
|
@ -245,7 +245,7 @@ class UiFirstTimeWizard(object):
|
||||||
self.cancel_wizard_text = translate('OpenLP.FirstTimeWizard',
|
self.cancel_wizard_text = translate('OpenLP.FirstTimeWizard',
|
||||||
'\n\nTo cancel the First Time Wizard completely (and not start OpenLP), '
|
'\n\nTo cancel the First Time Wizard completely (and not start OpenLP), '
|
||||||
'click the %s button now.') % \
|
'click the %s button now.') % \
|
||||||
first_time_wizard.buttonText(QtGui.QWizard.CancelButton)
|
clean_button_text(first_time_wizard.buttonText(QtGui.QWizard.CancelButton))
|
||||||
self.songs_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Sample Songs'))
|
self.songs_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Sample Songs'))
|
||||||
self.songs_page.setSubTitle(translate('OpenLP.FirstTimeWizard', 'Select and download public domain songs.'))
|
self.songs_page.setSubTitle(translate('OpenLP.FirstTimeWizard', 'Select and download public domain songs.'))
|
||||||
self.bibles_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Sample Bibles'))
|
self.bibles_page.setTitle(translate('OpenLP.FirstTimeWizard', 'Sample Bibles'))
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2014 Raoul Snyman #
|
||||||
|
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
|
||||||
|
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
|
||||||
|
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
|
||||||
|
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
|
||||||
|
# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
|
||||||
|
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
|
||||||
|
# Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# This program is free software; you can redistribute it and/or modify it #
|
||||||
|
# under the terms of the GNU General Public License as published by the Free #
|
||||||
|
# Software Foundation; version 2 of the License. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
||||||
|
# more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License along #
|
||||||
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||||
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
|
###############################################################################
|
||||||
|
"""
|
||||||
|
The Projector driver module.
|
||||||
|
"""
|
|
@ -33,7 +33,7 @@ Functional tests to test the AppLocation class and related methods.
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from openlp.core.common import check_directory_exists, de_hump, trace_error_handler, translate, is_win, is_macosx, \
|
from openlp.core.common import check_directory_exists, de_hump, trace_error_handler, translate, is_win, is_macosx, \
|
||||||
is_linux
|
is_linux, clean_button_text
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
|
|
||||||
|
|
||||||
|
@ -188,3 +188,17 @@ class TestCommonFunctions(TestCase):
|
||||||
self.assertTrue(is_linux(), 'is_linux() should return True')
|
self.assertTrue(is_linux(), 'is_linux() should return True')
|
||||||
self.assertFalse(is_win(), 'is_win() should return False')
|
self.assertFalse(is_win(), 'is_win() should return False')
|
||||||
self.assertFalse(is_macosx(), 'is_macosx() should return False')
|
self.assertFalse(is_macosx(), 'is_macosx() should return False')
|
||||||
|
|
||||||
|
def clean_button_text_test(self):
|
||||||
|
"""
|
||||||
|
Test the clean_button_text() function.
|
||||||
|
"""
|
||||||
|
# GIVEN: Button text
|
||||||
|
input_text = '&Next >'
|
||||||
|
expected_text = 'Next'
|
||||||
|
|
||||||
|
# WHEN: The button caption is sent through the clean_button_text function
|
||||||
|
actual_text = clean_button_text(input_text)
|
||||||
|
|
||||||
|
# THEN: The text should have been cleaned
|
||||||
|
self.assertEqual(expected_text, actual_text, 'The text should be clean')
|
||||||
|
|
Loading…
Reference in New Issue