diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 67ff6f32f..241c6fd95 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -43,7 +43,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): """ log.info(u'%s EditSongForm loaded', __name__) - def __init__(self, parent, songmanager): + def __init__(self, parent, manager): """ Constructor """ @@ -100,7 +100,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview) # Create other objects and forms - self.songmanager = songmanager + self.manager = manager self.verse_form = EditVerseForm(self) self.initialise() self.AuthorsListView.setSortingEnabled(False) @@ -116,7 +116,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.TopicRemoveButton.setEnabled(False) def loadAuthors(self): - authors = self.songmanager.get_all_objects(Author, + authors = self.manager.get_all_objects(Author, order_by_ref=Author.display_name) self.AuthorsSelectionComboItem.clear() self.AuthorsSelectionComboItem.addItem(u'') @@ -127,8 +127,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): row, QtCore.QVariant(author.id)) def loadTopics(self): - topics = self.songmanager.get_all_objects(Topic, - order_by_ref=Topic.name) + topics = self.manager.get_all_objects(Topic, order_by_ref=Topic.name) self.SongTopicCombo.clear() self.SongTopicCombo.addItem(u'') for topic in topics: @@ -137,7 +136,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTopicCombo.setItemData(row, QtCore.QVariant(topic.id)) def loadBooks(self): - books = self.songmanager.get_all_objects(Book, order_by_ref=Book.name) + books = self.manager.get_all_objects(Book, order_by_ref=Book.name) self.SongbookCombo.clear() self.SongbookCombo.addItem(u'') for book in books: @@ -177,15 +176,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.loadAuthors() self.loadTopics() self.loadBooks() - self.song = self.songmanager.get_object(Song, id) + self.song = self.manager.get_object(Song, id) self.TitleEditItem.setText(self.song.title) if self.song.alternate_title: self.AlternativeEdit.setText(self.song.alternate_title) else: self.AlternativeEdit.setText(u'') if self.song.song_book_id != 0: - book_name = self.songmanager.get_object(Book, - self.song.song_book_id) + book_name = self.manager.get_object(Book, self.song.song_book_id) id = self.SongbookCombo.findText( unicode(book_name.name), QtCore.Qt.MatchExactly) if id == -1: @@ -299,7 +297,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): else: author = Author.populate(first_name=text.rsplit(u' ', 1)[0], last_name=text.rsplit(u' ', 1)[1], display_name=text) - self.songmanager.save_object(author) + self.manager.save_object(author) author_item = QtGui.QListWidgetItem( unicode(author.display_name)) author_item.setData(QtCore.Qt.UserRole, @@ -311,7 +309,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): return elif item > 0: item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0] - author = self.songmanager.get_object(Author, item_id) + author = self.manager.get_object(Author, item_id) if self.AuthorsListView.findItems(unicode(author.display_name), QtCore.Qt.MatchExactly): QtGui.QMessageBox.warning(self, @@ -354,7 +352,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: topic = Topic.populate(name=text) - self.songmanager.save_object(topic) + self.manager.save_object(topic) topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) @@ -365,7 +363,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): return elif item > 0: item_id = (self.SongTopicCombo.itemData(item)).toInt()[0] - topic = self.songmanager.get_object(Topic, item_id) + topic = self.manager.get_object(Topic, item_id) if self.TopicsListView.findItems(unicode(topic.name), QtCore.Qt.MatchExactly): QtGui.QMessageBox.warning(self, @@ -598,7 +596,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): The Song is valid so as the plugin to add it to preview to see. """ log.debug(u'onPreview') - if unicode(button.objectName()) == u'previewButton' and self.saveSong(): + if unicode(button.objectName()) == u'previewButton' and \ + self.saveSong(True): Receiver.send_message(u'songs_preview') def closePressed(self): @@ -619,17 +618,20 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: book = Book.populate(name=text, publisher=u'') - self.songmanager.save_object(book) + self.manager.save_object(book) else: return if self.saveSong(): Receiver.send_message(u'songs_load_list') self.close() - def saveSong(self): + def saveSong(self, preview=False): """ Get all the data from the widgets on the form, and then save it to the database. + + ``preview`` + Should be True if song is also previewed. """ self.song.title = unicode(self.TitleEditItem.text()) self.song.alternate_title = unicode(self.AlternativeEdit.text()) @@ -642,7 +644,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.song_number = unicode(self.songBookNumberEdit.text()) book_name = unicode(self.SongbookCombo.currentText()) if book_name: - self.song.book = self.songmanager.get_object_filtered(Book, + self.song.book = self.manager.get_object_filtered(Book, Book.name == book_name) else: self.song.book = None @@ -653,16 +655,16 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for row in range(self.AuthorsListView.count()): item = self.AuthorsListView.item(row) authorId = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.song.authors.append(self.songmanager.get_object(Author, + self.song.authors.append(self.manager.get_object(Author, authorId)) self.song.topics = [] for row in range(self.TopicsListView.count()): item = self.TopicsListView.item(row) topicId = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.song.topics.append(self.songmanager.get_object(Topic, - topicId)) - self.songmanager.save_object(self.song) - self.song = None + self.song.topics.append(self.manager.get_object(Topic, topicId)) + self.manager.save_object(self.song) + if not preview: + self.song = None return True return False diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 48f9a5a55..7c13e0989 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -36,13 +36,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Class documentation goes here. """ - def __init__(self, songmanager, parent=None): + def __init__(self, manager, parent=None): """ Constructor """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - self.songmanager = songmanager + self.manager = manager self.authorform = AuthorsForm(self) self.topicform = TopicsForm(self) self.bookform = SongBookForm(self) @@ -85,12 +85,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): del_text, err_text, sel_text): item_id = self._getCurrentItemId(list_widget) if item_id != -1: - item = self.songmanager.get_object(item_class, item_id) + item = self.manager.get_object(item_class, item_id) if item and len(item.songs) == 0: if QtGui.QMessageBox.warning(self, dlg_title, del_text, QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: - self.songmanager.delete_object(item_class, item.id) + self.manager.delete_object(item_class, item.id) reset_func() else: QtGui.QMessageBox.critical(self, dlg_title, err_text) @@ -102,7 +102,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): Reloads the Authors list. """ self.AuthorsListWidget.clear() - authors = self.songmanager.get_all_objects(Author, + authors = self.manager.get_all_objects(Author, order_by_ref=Author.display_name) for author in authors: if author.display_name: @@ -124,8 +124,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): Reloads the Topics list. """ self.TopicsListWidget.clear() - topics = self.songmanager.get_all_objects(Topic, - order_by_ref=Topic.name) + topics = self.manager.get_all_objects(Topic, order_by_ref=Topic.name) for topic in topics: topic_name = QtGui.QListWidgetItem(topic.name) topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) @@ -142,7 +141,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): Reloads the Books list. """ self.BooksListWidget.clear() - books = self.songmanager.get_all_objects(Book, order_by_ref=Book.name) + books = self.manager.get_all_objects(Book, order_by_ref=Book.name) for book in books: book_name = QtGui.QListWidgetItem(u'%s (%s)' % (book.name, book.publisher)) @@ -160,7 +159,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): Returns False if the given Author is already in the list otherwise True. """ - authors = self.songmanager.get_all_objects(Author, + authors = self.manager.get_all_objects(Author, and_(Author.first_name == new_author.first_name, Author.last_name == new_author.last_name, Author.display_name == new_author.display_name)) @@ -182,7 +181,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Returns False if the given Topic is already in the list otherwise True. """ - topics = self.songmanager.get_all_objects(Topic, + topics = self.manager.get_all_objects(Topic, Topic.name == new_topic.name) if len(topics) > 0: # If we edit an existing Topic, we need to make sure that we do @@ -202,7 +201,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Returns False if the given Book is already in the list otherwise True. """ - books = self.songmanager.get_all_objects(Book, + books = self.manager.get_all_objects(Book, and_(Book.name == new_book.name, Book.publisher == new_book.publisher)) if len(books) > 0: @@ -227,7 +226,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): last_name=unicode(self.authorform.LastNameEdit.text()), display_name=unicode(self.authorform.DisplayEdit.text())) if self.checkAuthor(author): - if self.songmanager.save_object(author): + if self.manager.save_object(author): self.resetAuthors() else: QtGui.QMessageBox.critical(self, @@ -244,7 +243,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): if self.topicform.exec_(): topic = Topic.populate(name=unicode(self.topicform.NameEdit.text())) if self.checkTopic(topic): - if self.songmanager.save_object(topic): + if self.manager.save_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical(self, @@ -262,7 +261,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): book = Book.populate(name=unicode(self.bookform.NameEdit.text()), publisher=unicode(self.bookform.PublisherEdit.text())) if self.checkBook(book): - if self.songmanager.save_object(book): + if self.manager.save_object(book): self.resetBooks() else: QtGui.QMessageBox.critical(self, @@ -278,7 +277,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onAuthorEditButtonClick(self): author_id = self._getCurrentItemId(self.AuthorsListWidget) if author_id != -1: - author = self.songmanager.get_object(Author, author_id) + author = self.manager.get_object(Author, author_id) self.authorform.setAutoDisplayName(False) self.authorform.FirstNameEdit.setText(author.first_name) self.authorform.LastNameEdit.setText(author.last_name) @@ -295,7 +294,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): author.display_name = unicode( self.authorform.DisplayEdit.text()) if self.checkAuthor(author, True): - if self.songmanager.save_object(author): + if self.manager.save_object(author): self.resetAuthors() Receiver.send_message(u'songs_load_list') else: @@ -330,14 +329,14 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onTopicEditButtonClick(self): topic_id = self._getCurrentItemId(self.TopicsListWidget) if topic_id != -1: - topic = self.songmanager.get_object(Topic, topic_id) + topic = self.manager.get_object(Topic, topic_id) self.topicform.NameEdit.setText(topic.name) # Save the topic's name for the case that he has to be restored. temp_name = topic.name if self.topicform.exec_(False): topic.name = unicode(self.topicform.NameEdit.text()) if self.checkTopic(topic, True): - if self.songmanager.save_object(topic): + if self.manager.save_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical(self, @@ -367,7 +366,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onBookEditButtonClick(self): book_id = self._getCurrentItemId(self.BooksListWidget) if book_id != -1: - book = self.songmanager.get_object(Book, book_id) + book = self.manager.get_object(Book, book_id) if book.publisher is None: book.publisher = u'' self.bookform.NameEdit.setText(book.name) @@ -380,7 +379,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): book.name = unicode(self.bookform.NameEdit.text()) book.publisher = unicode(self.bookform.PublisherEdit.text()) if self.checkBook(book, True): - if self.songmanager.save_object(book): + if self.manager.save_object(book): self.resetBooks() else: QtGui.QMessageBox.critical(self, @@ -410,11 +409,11 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): ``old_author`` The author which will be deleted afterwards. """ - existing_author = self.songmanager.get_object_filtered(Author, + existing_author = self.manager.get_object_filtered(Author, and_(Author.first_name == old_author.first_name, Author.last_name == old_author.last_name, Author.display_name == old_author.display_name)) - songs = self.songmanager.get_all_objects(Song, + songs = self.manager.get_all_objects(Song, Song.authors.contains(old_author)) for song in songs: # We check if the song has already existing_author as author. If @@ -422,8 +421,8 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): if existing_author not in song.authors: song.authors.append(existing_author) song.authors.remove(old_author) - self.songmanager.save_object(song) - self.songmanager.delete_object(Author, old_author.id) + self.manager.save_object(song) + self.manager.delete_object(Author, old_author.id) def mergeTopics(self, old_topic): """ @@ -432,9 +431,9 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): ``old_topic`` The topic which will be deleted afterwards. """ - existing_topic = self.songmanager.get_object_filtered(Topic, + existing_topic = self.manager.get_object_filtered(Topic, Topic.name == old_topic.name) - songs = self.songmanager.get_all_objects(Song, + songs = self.manager.get_all_objects(Song, Song.topics.contains(old_topic)) for song in songs: # We check if the song has already existing_topic as topic. If that @@ -442,8 +441,8 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): if existing_topic not in song.topics: song.topics.append(existing_topic) song.topics.remove(old_topic) - self.songmanager.save_object(song) - self.songmanager.delete_object(Topic, old_topic.id) + self.manager.save_object(song) + self.manager.delete_object(Topic, old_topic.id) def mergeBooks(self, old_book): """ @@ -452,15 +451,15 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): ``old_book`` The book which will be deleted afterwards. """ - existing_book = self.songmanager.get_object_filtered(Book, + existing_book = self.manager.get_object_filtered(Book, and_(Book.name == old_book.name, Book.publisher == old_book.publisher)) - songs = self.songmanager.get_all_objects(Song, + songs = self.manager.get_all_objects(Song, Song.song_book_id == old_book.id) for song in songs: song.song_book_id = existing_book.id - self.songmanager.save_object(song) - self.songmanager.delete_object(Book, old_book.id) + self.manager.save_object(song) + self.manager.delete_object(Book, old_book.id) def onAuthorDeleteButtonClick(self): """ diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index d2e0698b3..fed34818b 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -47,8 +47,9 @@ class SongImport(QtCore.QObject): """ Initialise and create defaults for properties - song_manager is an instance of a SongManager, through which all - database access is performed + ``manager`` + An instance of a SongManager, through which all database access is + performed. """ self.manager = manager self.stop_import_flag = False