diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index b1a22f1cf..cfe183db6 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -112,7 +112,8 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): Generically load a set of objects into a cache and a combobox. """ objects = self.manager.get_all_objects(cls) - objects.sort(key=lambda object: get_natural_key(object.name)) + get_key = lambda object: get_natural_key(object.name) + objects.sort(key=get_key) combo.clear() combo.addItem('') for obj in objects: @@ -346,7 +347,8 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): Load the authors from the database into the combobox. """ authors = self.manager.get_all_objects(Author) - authors.sort(key=lambda author: get_natural_key(author.display_name)) + get_author_key = lambda author: get_natural_key(author.display_name) + authors.sort(key=get_author_key) self.authors_combo_box.clear() self.authors_combo_box.addItem('') self.authors = [] @@ -384,7 +386,8 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): self.theme_combo_box.clear() self.theme_combo_box.addItem('') self.themes = theme_list - self.themes.sort(key=lambda theme: get_natural_key(theme)) + get_theme_key = lambda theme: get_natural_key(theme) + self.themes.sort(key=get_theme_key) self.theme_combo_box.addItems(theme_list) set_case_insensitive_completer(self.themes, self.theme_combo_box) diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index ee35ea7e5..fbf909552 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -213,7 +213,8 @@ class SongExportForm(OpenLPWizard): # Load the list of songs. self.application.set_busy_cursor() songs = self.plugin.manager.get_all_objects(Song) - songs.sort(key=lambda song: song.sort_key) + get_song_key = lambda song: song.sort_key + songs.sort(key=get_song_key) for song in songs: # No need to export temporary songs. if song.temporary: diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 6089c94e7..52c84acbd 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -123,7 +123,8 @@ class SongMaintenanceForm(QtWidgets.QDialog, Ui_SongMaintenanceDialog, RegistryP """ self.authors_list_widget.clear() authors = self.manager.get_all_objects(Author) - authors.sort(key=lambda author: get_natural_key(author.display_name)) + get_author_key = lambda author: get_natural_key(author.display_name) + authors.sort(key=get_author_key) for author in authors: if author.display_name: author_name = QtWidgets.QListWidgetItem(author.display_name) @@ -138,7 +139,8 @@ class SongMaintenanceForm(QtWidgets.QDialog, Ui_SongMaintenanceDialog, RegistryP """ self.topics_list_widget.clear() topics = self.manager.get_all_objects(Topic) - topics.sort(key=lambda topic: get_natural_key(topic.name)) + get_topic_key = lambda topic: get_natural_key(topic.name) + topics.sort(key=get_topic_key) for topic in topics: topic_name = QtWidgets.QListWidgetItem(topic.name) topic_name.setData(QtCore.Qt.UserRole, topic.id) @@ -150,7 +152,8 @@ class SongMaintenanceForm(QtWidgets.QDialog, Ui_SongMaintenanceDialog, RegistryP """ self.song_books_list_widget.clear() books = self.manager.get_all_objects(Book) - books.sort(key=lambda book: get_natural_key(book.name)) + get_book_key = lambda book: get_natural_key(book.name) + books.sort(key=get_book_key) for book in books: book_name = QtWidgets.QListWidgetItem('%s (%s)' % (book.name, book.publisher)) book_name.setData(QtCore.Qt.UserRole, book.id) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 2c483a48a..c43a23781 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -261,7 +261,8 @@ class SongMediaItem(MediaManagerItem): log.debug('display results Song') self.save_auto_select_id() self.list_view.clear() - search_results.sort(key=lambda song: song.sort_key) + get_song_key = lambda song: song.sort_key + search_results.sort(key=get_song_key) for song in search_results: # Do not display temporary songs if song.temporary: @@ -285,9 +286,11 @@ class SongMediaItem(MediaManagerItem): """ log.debug('display results Author') self.list_view.clear() - search_results.sort(key=lambda author: get_natural_key(author.display_name)) + get_author_key = lambda author: get_natural_key(author.display_name) + search_results.sort(key=get_author_key) for author in search_results: - author.songs.sort(key=lambda song: song.sort_key) + get_song_key = lambda song: song.sort_key + author.songs.sort(key=get_song_key) for song in author.songs: # Do not display temporary songs if song.temporary: @@ -306,8 +309,8 @@ class SongMediaItem(MediaManagerItem): """ log.debug('display results Book') self.list_view.clear() - search_results.sort(key=lambda songbook_entry: - (get_natural_key(songbook_entry.songbook.name), get_natural_key(songbook_entry.entry))) + get_songbook_key = lambda songbook_entry:(get_natural_key(songbook_entry.songbook.name), get_natural_key(songbook_entry.entry)) + search_results.sort(key=get_songbook_key) for songbook_entry in search_results: # Do not display temporary songs if songbook_entry.song.temporary: @@ -326,9 +329,11 @@ class SongMediaItem(MediaManagerItem): """ log.debug('display results Topic') self.list_view.clear() - search_results.sort(key=lambda topic: get_natural_key(topic.name)) + get_topic_key = lambda topic: get_natural_key(topic.name) + search_results.sort(key=get_topic_key) for topic in search_results: - topic.songs.sort(key=lambda song: song.sort_key) + get_song_key = lambda song: song.sort_key + topic.songs.sort(key=get_song_key) for song in topic.songs: # Do not display temporary songs if song.temporary: @@ -347,8 +352,8 @@ class SongMediaItem(MediaManagerItem): """ log.debug('display results Themes') self.list_view.clear() - search_results.sort(key=lambda song: (get_natural_key(song.theme_name), - song.sort_key)) + get_theme_key = lambda song: (get_natural_key(song.theme_name), song.sort_key) + search_results.sort(key=get_theme_key) for song in search_results: # Do not display temporary songs if song.temporary: @@ -367,8 +372,8 @@ class SongMediaItem(MediaManagerItem): """ log.debug('display results CCLI number') self.list_view.clear() - search_results.sort(key=lambda song: (get_natural_key(song.ccli_number), - song.sort_key)) + get_cclinumber_key = lambda song: (get_natural_key(song.ccli_number), song.sort_key) + search_results.sort(key=get_cclinumber_key) for song in search_results: # Do not display temporary songs if song.temporary: