diff --git a/openlp/core/common/actions.py b/openlp/core/common/actions.py index cb5b9ccaf..7f8c90f86 100644 --- a/openlp/core/common/actions.py +++ b/openlp/core/common/actions.py @@ -114,7 +114,7 @@ class CategoryActionList(object): if item[1] == action: self.actions.remove(item) return - raise ValueError('Action "%s" does not exist.' % action) + raise ValueError('Action "{action}" does not exist.'.format(action=action)) class CategoryList(object): @@ -138,7 +138,7 @@ class CategoryList(object): for category in self.categories: if category.name == key: return category - raise KeyError('Category "%s" does not exist.' % key) + raise KeyError('Category "{keY}" does not exist.'.format(key=key)) def __len__(self): """ @@ -203,7 +203,7 @@ class CategoryList(object): if category.name == name: self.categories.remove(category) return - raise ValueError('Category "%s" does not exist.' % name) + raise ValueError('Category "{name}" does not exist.'.format(name=name)) class ActionList(object): @@ -272,8 +272,9 @@ class ActionList(object): actions.append(action) ActionList.shortcut_map[shortcuts[1]] = actions else: - log.warning('Shortcut "%s" is removed from "%s" because another action already uses this shortcut.' % - (shortcuts[1], action.objectName())) + log.warning('Shortcut "{shortcut}" is removed from "{action}" because another ' + 'action already uses this shortcut.'.format(shortcut=shortcuts[1], + action=action.objectName())) shortcuts.remove(shortcuts[1]) # Check the primary shortcut. existing_actions = ActionList.shortcut_map.get(shortcuts[0], []) @@ -283,8 +284,9 @@ class ActionList(object): actions.append(action) ActionList.shortcut_map[shortcuts[0]] = actions else: - log.warning('Shortcut "%s" is removed from "%s" because another action already uses this shortcut.' % - (shortcuts[0], action.objectName())) + log.warning('Shortcut "{shortcut}" is removed from "{action}" '' + because another action already uses this shortcut.'.format(shortcut=shortcuts[0], + action=action.objectName())) shortcuts.remove(shortcuts[0]) action.setShortcuts([QtGui.QKeySequence(shortcut) for shortcut in shortcuts]) diff --git a/openlp/core/common/languagemanager.py b/openlp/core/common/languagemanager.py index 52e9e9f13..58262ffb5 100644 --- a/openlp/core/common/languagemanager.py +++ b/openlp/core/common/languagemanager.py @@ -68,7 +68,7 @@ class LanguageManager(object): """ Find all available language files in this OpenLP install """ - log.debug('Translation files: %s', AppLocation.get_directory(AppLocation.LanguageDir)) + log.debug('Translation files: {files}'.format(files=AppLocation.get_directory(AppLocation.LanguageDir))) trans_dir = QtCore.QDir(AppLocation.get_directory(AppLocation.LanguageDir)) file_names = trans_dir.entryList(['*.qm'], QtCore.QDir.Files, QtCore.QDir.Name) # Remove qm files from the list which start with "qt_". @@ -93,7 +93,7 @@ class LanguageManager(object): """ language = Settings().value('core/language') language = str(language) - log.info('Language file: \'%s\' Loaded from conf file' % language) + log.info("Language file: '{language}' Loaded from conf file".format(language=language)) if re.match(r'[[].*[]]', language): LanguageManager.auto_language = True language = re.sub(r'[\[\]]', '', language) @@ -117,9 +117,9 @@ class LanguageManager(object): qm_list = LanguageManager.get_qm_list() language = str(qm_list[action_name]) if LanguageManager.auto_language: - language = '[%s]' % language + language = '[{language}]'.format(language=language) Settings().setValue('core/language', language) - log.info('Language file: \'%s\' written to conf file' % language) + log.info("Language file: '{language}' written to conf file".format(language=language)) if message: QtWidgets.QMessageBox.information(None, translate('OpenLP.LanguageManager', 'Language'), @@ -136,7 +136,8 @@ class LanguageManager(object): for counter, qmf in enumerate(qm_files): reg_ex = QtCore.QRegExp("^.*i18n/(.*).qm") if reg_ex.exactMatch(qmf): - name = '%s' % reg_ex.cap(1) + name = '{regex}'.format(regex=reg_ex.cap(1)) + # TODO: Test before converting to python3 string format LanguageManager.__qm_list__['%#2i %s' % (counter + 1, LanguageManager.language_name(qmf))] = name @staticmethod diff --git a/openlp/core/common/openlpmixin.py b/openlp/core/common/openlpmixin.py index d17f36bd6..94505b86b 100644 --- a/openlp/core/common/openlpmixin.py +++ b/openlp/core/common/openlpmixin.py @@ -49,12 +49,13 @@ class OpenLPMixin(object): Code to added debug wrapper to work on called functions within a decorated class. """ def wrapped(*args, **kwargs): - parent.logger.debug("Entering %s" % func.__name__) + parent.logger.debug("Entering {function}".format(function=func.__name__)) try: return func(*args, **kwargs) except Exception as e: if parent.logger.getEffectiveLevel() <= logging.ERROR: - parent.logger.error('Exception in %s : %s' % (func.__name__, e)) + parent.logger.error('Exception in {function} : {error}'.format(function=func.__name__, + error=e)) raise e return wrapped diff --git a/openlp/core/common/registry.py b/openlp/core/common/registry.py index adf495a36..b904d627c 100644 --- a/openlp/core/common/registry.py +++ b/openlp/core/common/registry.py @@ -71,8 +71,8 @@ class Registry(object): else: if not self.initialising: trace_error_handler(log) - log.error('Service %s not found in list' % key) - raise KeyError('Service %s not found in list' % key) + log.error('Service {key} not found in list'.format(key=key)) + raise KeyError('Service {key} not found in list'.format(key=key)) def register(self, key, reference): """ @@ -83,8 +83,8 @@ class Registry(object): """ if key in self.service_list: trace_error_handler(log) - log.error('Duplicate service exception %s' % key) - raise KeyError('Duplicate service exception %s' % key) + log.error('Duplicate service exception {key}'.format(key=key)) + raise KeyError('Duplicate service exception {key}'.format(key=key)) else: self.service_list[key] = reference @@ -140,8 +140,8 @@ class Registry(object): except TypeError: # Who has called me can help in debugging trace_error_handler(log) - log.exception('Exception for function %s', function) + log.exception('Exception for function {function}'.format(function=function)) else: trace_error_handler(log) - log.error("Event %s called but not registered" % event) + log.error("Event {event} called but not registered".format(event=event)) return results diff --git a/openlp/core/common/settings.py b/openlp/core/common/settings.py index 84fc6db96..07449ff64 100644 --- a/openlp/core/common/settings.py +++ b/openlp/core/common/settings.py @@ -487,16 +487,16 @@ class Settings(QtCore.QSettings): # Do NOT do this anywhere else! settings = QtCore.QSettings(self.fileName(), Settings.IniFormat) settings.beginGroup(plugin.settings_section) - if settings.contains('%s count' % plugin.name): + if settings.contains('{name} count'.format(name=plugin.name)): # Get the count. - list_count = int(settings.value('%s count' % plugin.name, 0)) + list_count = int(settings.value('{name} count'.format(name=plugin.name), 0)) if list_count: for counter in range(list_count): # The keys were named e. g.: "image 0" - item = settings.value('%s %d' % (plugin.name, counter), '') + item = settings.value('{name} {counter:d}'.format(name=plugin.name, counter=counter), '') if item: files_list.append(item) - settings.remove('%s %d' % (plugin.name, counter)) - settings.remove('%s count' % plugin.name) + settings.remove('{name} {counter:d}'.format=(plugin.name, counter)) + settings.remove('{name} count'.format(name=plugin.name)) settings.endGroup() return files_list diff --git a/openlp/core/common/uistrings.py b/openlp/core/common/uistrings.py index c7e29415d..91db10fcf 100644 --- a/openlp/core/common/uistrings.py +++ b/openlp/core/common/uistrings.py @@ -80,6 +80,7 @@ class UiStrings(object): self.Export = translate('OpenLP.Ui', 'Export') self.File = translate('OpenLP.Ui', 'File') self.FileNotFound = translate('OpenLP.Ui', 'File Not Found') + # TODO: Check before converting to python3 string self.FileNotFoundMessage = translate('OpenLP.Ui', 'File %s not found.\nPlease try selecting it individually.') self.FontSizePtUnit = translate('OpenLP.Ui', 'pt', 'Abbreviated font pointsize unit') self.Help = translate('OpenLP.Ui', 'Help') @@ -110,8 +111,8 @@ class UiStrings(object): self.NISs = translate('OpenLP.Ui', 'No Item Selected', 'Singular') self.NISp = translate('OpenLP.Ui', 'No Items Selected', 'Plural') self.OLP = translate('OpenLP.Ui', 'OpenLP') - self.OLPV2 = "%s %s" % (self.OLP, "2") - self.OLPV2x = "%s %s" % (self.OLP, "2.4") + self.OLPV2 = "{name} {version}".format(name=self.OLP, version="2") + self.OLPV2x = "{name} {version}".format(name=self.OLP, version="2.4") self.OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you wish to continue?') self.OpenService = translate('OpenLP.Ui', 'Open service.') self.PlaySlidesInLoop = translate('OpenLP.Ui', 'Play Slides in Loop') @@ -139,6 +140,7 @@ class UiStrings(object): self.Split = translate('OpenLP.Ui', 'Optional &Split') self.SplitToolTip = translate('OpenLP.Ui', 'Split a slide into two only if it does not fit on the screen as one slide.') + # TODO: Check before converting to python3 string self.StartTimeCode = translate('OpenLP.Ui', 'Start %s') self.StopPlaySlidesInLoop = translate('OpenLP.Ui', 'Stop Play Slides in Loop') self.StopPlaySlidesToEnd = translate('OpenLP.Ui', 'Stop Play Slides to End') diff --git a/openlp/core/common/versionchecker.py b/openlp/core/common/versionchecker.py index 136405607..fb706968b 100644 --- a/openlp/core/common/versionchecker.py +++ b/openlp/core/common/versionchecker.py @@ -44,9 +44,10 @@ class VersionThread(QtCore.QThread): log.debug('Version thread - run') app_version = get_application_version() version = check_latest_version(app_version) - log.debug("Versions %s and %s " % (LooseVersion(str(version)), LooseVersion(str(app_version['full'])))) + log.debug("Versions {version1} and {version2} ".format(version1=LooseVersion(str(version)), + version2=LooseVersion(str(app_version['full'])))) if LooseVersion(str(version)) > LooseVersion(str(app_version['full'])): - self.main_window.openlp_version_check.emit('%s' % version) + self.main_window.openlp_version_check.emit('{version}'.format(version=version)) def get_application_version(): @@ -91,7 +92,7 @@ def get_application_version(): if tree_revision == tag_revision: full_version = tag_version.strip() else: - full_version = '%s-bzr%s' % (tag_version.strip(), tree_revision.strip()) + full_version = '{tag}-bzr{tree}'.format(tag=tag_version.strip(), tree=tree_revision.strip()) else: # We're not running the development version, let's use the file. file_path = AppLocation.get_directory(AppLocation.VersionDir) @@ -113,9 +114,10 @@ def get_application_version(): 'build': bits[1] if len(bits) > 1 else None } if APPLICATION_VERSION['build']: - log.info('Openlp version %s build %s', APPLICATION_VERSION['version'], APPLICATION_VERSION['build']) + log.info('Openlp version {version} build {build}'.format(version=APPLICATION_VERSION['version'], + build=APPLICATION_VERSION['build'])) else: - log.info('Openlp version %s' % APPLICATION_VERSION['version']) + log.info('Openlp version {version}'.format(version=APPLICATION_VERSION['version'])) return APPLICATION_VERSION @@ -149,8 +151,9 @@ def check_latest_version(current_version): req = urllib.request.Request('http://www.openlp.org/files/dev_version.txt') else: req = urllib.request.Request('http://www.openlp.org/files/version.txt') - req.add_header('User-Agent', 'OpenLP/%s %s/%s; ' % (current_version['full'], platform.system(), - platform.release())) + req.add_header('User-Agent', 'OpenLP/{version} {system}/{release}; '.format(version=current_version['full'], + system=platform.system(), + release=platform.release())) remote_version = None retries = 0 while True: diff --git a/tests/functional/openlp_core_lib/test_projectordb.py b/tests/functional/openlp_core_lib/test_projectordb.py index f6d52e476..158cb5fb6 100644 --- a/tests/functional/openlp_core_lib/test_projectordb.py +++ b/tests/functional/openlp_core_lib/test_projectordb.py @@ -206,3 +206,17 @@ class TestProjectorDB(TestCase): # THEN: __repr__ should return a proper string self.assertEqual(str(manufacturer), '', 'Manufacturer.__repr__() should have returned a proper representation string') + + def model_repr_test(self): + """ + Test model class __repr__ text + """ + # GIVEN: Test object + model = Model() + + # WHEN: Name is set + model.name = 'OpenLP Test' + + # THEN: __repr__ should return a proper string + self.assertEqual(str(model), '', + 'Model.__repr__() should have returned a proper representation string')