Andreas Preikschat has proposed merging lp:~googol-hush/openlp/fixes into 
lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  #690774 "Add missing songs" floods the database with duplicates
  https://bugs.launchpad.net/bugs/690774


- camelCase for Ui_FileRenameDialog
- Fixed bug #690774
- Keep copyright field empty if the imported song (from the service list) does 
not have any copyright information.



-- 
https://code.launchpad.net/~googol-hush/openlp/fixes/+merge/44057
Your team OpenLP Core is requested to review the proposed merge of 
lp:~googol-hush/openlp/fixes into lp:openlp.
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py	2010-11-27 20:51:54 +0000
+++ openlp/core/lib/serviceitem.py	2010-12-17 14:44:09 +0000
@@ -44,6 +44,7 @@
     Image = 2
     Command = 3
 
+
 class ItemCapabilities(object):
     """
     Provides an enumeration of a serviceitem's capabilities

=== modified file 'openlp/core/ui/filerenamedialog.py'
--- openlp/core/ui/filerenamedialog.py	2010-11-03 18:03:28 +0000
+++ openlp/core/ui/filerenamedialog.py	2010-12-17 14:44:09 +0000
@@ -30,24 +30,24 @@
 
 class Ui_FileRenameDialog(object):
     def setupUi(self, FileRenameDialog):
-        FileRenameDialog.setObjectName("FileRenameDialog")
+        FileRenameDialog.setObjectName(u'FileRenameDialog')
         FileRenameDialog.resize(400, 87)
         self.buttonBox = QtGui.QDialogButtonBox(FileRenameDialog)
         self.buttonBox.setGeometry(QtCore.QRect(210, 50, 171, 25))
         self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
             QtGui.QDialogButtonBox.Ok)
-        self.buttonBox.setObjectName("buttonBox")
+        self.buttonBox.setObjectName(u'buttonBox')
         self.widget = QtGui.QWidget(FileRenameDialog)
         self.widget.setGeometry(QtCore.QRect(10, 10, 381, 35))
-        self.widget.setObjectName("widget")
+        self.widget.setObjectName(u'widget')
         self.horizontalLayout = QtGui.QHBoxLayout(self.widget)
-        self.horizontalLayout.setObjectName("horizontalLayout")
-        self.FileRenameLabel = QtGui.QLabel(self.widget)
-        self.FileRenameLabel.setObjectName("FileRenameLabel")
-        self.horizontalLayout.addWidget(self.FileRenameLabel)
-        self.FileNameEdit = QtGui.QLineEdit(self.widget)
-        self.FileNameEdit.setObjectName("FileNameEdit")
-        self.horizontalLayout.addWidget(self.FileNameEdit)
+        self.horizontalLayout.setObjectName(u'horizontalLayout')
+        self.fileRenameLabel = QtGui.QLabel(self.widget)
+        self.fileRenameLabel.setObjectName(u'fileRenameLabel')
+        self.horizontalLayout.addWidget(self.fileRenameLabel)
+        self.fileNameEdit = QtGui.QLineEdit(self.widget)
+        self.fileNameEdit.setObjectName(u'fileNameEdit')
+        self.horizontalLayout.addWidget(self.fileNameEdit)
 
         self.retranslateUi(FileRenameDialog)
         QtCore.QMetaObject.connectSlotsByName(FileRenameDialog)
@@ -55,6 +55,5 @@
     def retranslateUi(self, FileRenameDialog):
         FileRenameDialog.setWindowTitle(translate('OpenLP.FileRenameForm',
             'File Rename'))
-        self.FileRenameLabel.setText(translate('OpenLP.FileRenameForm',
+        self.fileRenameLabel.setText(translate('OpenLP.FileRenameForm',
             'New File Name:'))
-

=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py	2010-12-11 20:49:50 +0000
+++ openlp/core/ui/thememanager.py	2010-12-17 14:44:09 +0000
@@ -225,10 +225,10 @@
         """
         item = self.themeListWidget.currentItem()
         oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
-        self.fileRenameForm.FileNameEdit.setText(oldThemeName)
+        self.fileRenameForm.fileNameEdit.setText(oldThemeName)
         self.saveThemeName = u''
         if self.fileRenameForm.exec_():
-            newThemeName =  unicode(self.fileRenameForm.FileNameEdit.text())
+            newThemeName =  unicode(self.fileRenameForm.fileNameEdit.text())
             oldThemeData = self.getThemeData(oldThemeName)
             self.deleteTheme(oldThemeName)
             self.cloneThemeData(oldThemeData, newThemeName)
@@ -239,10 +239,10 @@
         """
         item = self.themeListWidget.currentItem()
         oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
-        self.fileRenameForm.FileNameEdit.setText(oldThemeName)
+        self.fileRenameForm.fileNameEdit.setText(oldThemeName)
         self.saveThemeName = u''
         if self.fileRenameForm.exec_():
-            newThemeName =  unicode(self.fileRenameForm.FileNameEdit.text())
+            newThemeName =  unicode(self.fileRenameForm.fileNameEdit.text())
             themeData = self.getThemeData(oldThemeName)
             self.cloneThemeData(themeData, newThemeName)
             self.loadThemes()

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2010-12-09 15:08:04 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2010-12-17 14:44:09 +0000
@@ -44,6 +44,7 @@
         self.PluginName = u'Songs'
         BaseListWithDnD.__init__(self, parent)
 
+
 class SongMediaItem(MediaManagerItem):
     """
     This is the custom media manager item for Songs.
@@ -392,7 +393,7 @@
             author_audit.append(unicode(author.display_name))
         raw_footer.append(song.title)
         raw_footer.append(author_list)
-        raw_footer.append(song.copyright )
+        raw_footer.append(song.copyright)
         raw_footer.append(unicode(
             translate('SongsPlugin.MediaItem', 'CCLI License: ') +
             QtCore.QSettings().value(u'general/ccli number',
@@ -417,27 +418,37 @@
                     item.data_string[u'title'].split(u'@')[0].lower() ,
                 Song.search_title.asc())
             author_list = item.data_string[u'authors'].split(u', ')
+            # The service item always has an author (at least it has u'' as
+            # author). However, songs saved in the database do not have to have
+            # an author.
+            if u'' in author_list:
+                author_list.remove(u'')
             editId = 0
             uuid = item._uuid
+            add_song = True
             if search_results:
                 for song in search_results:
-                    count = 0
-                    for author in song.authors:
-                        if author.display_name in author_list:
-                            count += 1
-                    # All Authors the same
-                    if count == len(author_list):
+                    same_authors = True
+                    # If the author counts are different, we do not have to do
+                    # any further checking. This is also important when a song
+                    # does not have any author (because we can not loop over an
+                    # empty list).
+                    if len(song.authors) == len(author_list):
+                        for author in song.authors:
+                            if author.display_name not in author_list:
+                                same_authors = False
+                    else:
+                        same_authors = False
+                    # All authors are the same, so we can stop here and the song
+                    # does not have to be saved.
+                    if same_authors:
+                        add_song = False
                         editId = song.id
-                    else:
-                        # Authors different
-                        if self.addSongFromService:
-                            editId = self.openLyrics. \
-                                xml_to_song(item.xml_version)
-            else:
-                # Title does not match
+                        break
+            if add_song:
                 if self.addSongFromService:
                     editId = self.openLyrics.xml_to_song(item.xml_version)
-            # Update service with correct song id
+            # Update service with correct song id.
             if editId != 0:
                 Receiver.send_message(u'service_item_update',
                     u'%s:%s' %(editId, uuid))

=== modified file 'openlp/plugins/songs/lib/xml.py'
--- openlp/plugins/songs/lib/xml.py	2010-12-11 10:46:11 +0000
+++ openlp/plugins/songs/lib/xml.py	2010-12-17 14:44:09 +0000
@@ -297,6 +297,8 @@
         song_xml = objectify.fromstring(xml)
         properties = song_xml.properties
         song.copyright = unicode(properties.copyright.text)
+        if song.copyright == u'None':
+            song.copyright = u''
         song.verse_order = unicode(properties.verseOrder.text)
         if song.verse_order == u'None':
             song.verse_order = u''
@@ -357,7 +359,7 @@
 
     def _add_text_to_element(self, tag, parent, text=None, label=None):
         if label:
-            element = etree.Element(tag, name = unicode(label))
+            element = etree.Element(tag, name=unicode(label))
         else:
             element = etree.Element(tag)
         if text:

_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to     : openlp-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openlp-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to