forked from openlp/openlp
Songs get created correctly and displays refreshed
This commit is contained in:
parent
2c3c0f2255
commit
cc9ef10821
|
@ -789,6 +789,8 @@ class ServiceManager(QtGui.QWidget):
|
|||
self.serviceName = name[len(name) - 1]
|
||||
self.parent.addRecentFile(filename)
|
||||
self.parent.serviceChanged(True, self.serviceName)
|
||||
# Refresh Plugin lists
|
||||
Receiver.send_message(u'plugin_list_refresh')
|
||||
|
||||
def validateItem(self, serviceItem):
|
||||
"""
|
||||
|
|
|
@ -636,8 +636,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
self.song.title = unicode(self.TitleEditItem.text())
|
||||
self.song.alternate_title = unicode(self.AlternativeEdit.text())
|
||||
self.song.copyright = unicode(self.CopyrightEditItem.text())
|
||||
self.song.search_title = self.song.title + u'@' + \
|
||||
self.song.alternate_title
|
||||
if self.song.alternate_title:
|
||||
self.song.search_title = self.song.title + u'@' + \
|
||||
self.song.alternate_title
|
||||
else:
|
||||
self.song.search_title = self.song.title
|
||||
self.song.comments = unicode(self.CommentsEdit.toPlainText())
|
||||
self.song.verse_order = unicode(self.VerseOrderEdit.text())
|
||||
self.song.ccli_number = unicode(self.CCLNumberEdit.text())
|
||||
|
|
|
@ -114,6 +114,8 @@ class SongMediaItem(MediaManagerItem):
|
|||
self.SearchButtonLayout.addWidget(self.ClearTextButton)
|
||||
self.pageLayout.addLayout(self.SearchButtonLayout)
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'plugin_list_refresh'), self.onSearchTextButtonClick)
|
||||
QtCore.QObject.connect(self.SearchTextEdit,
|
||||
QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick)
|
||||
QtCore.QObject.connect(self.SearchTextButton,
|
||||
|
@ -397,7 +399,6 @@ class SongMediaItem(MediaManagerItem):
|
|||
]
|
||||
service_item.data_string = {u'title':song.search_title,
|
||||
u'authors':author_list}
|
||||
# if xmlVersion:
|
||||
service_item.xml_version = self.openLyrics.song_to_xml(song)
|
||||
return True
|
||||
|
||||
|
@ -408,8 +409,8 @@ class SongMediaItem(MediaManagerItem):
|
|||
log.debug(u'serviceLoad')
|
||||
if item.data_string:
|
||||
search_results = self.parent.manager.get_all_objects(Song,
|
||||
Song.search_title.like(u'%' +
|
||||
item.data_string[u'title'].split(u'@')[0] + u'%'),
|
||||
Song.search_title ==
|
||||
item.data_string[u'title'].split(u'@')[0].lower() ,
|
||||
Song.search_title.asc())
|
||||
author_list = item.data_string[u'authors'].split(u', ')
|
||||
editId = 0
|
||||
|
@ -427,11 +428,11 @@ class SongMediaItem(MediaManagerItem):
|
|||
# Authors different
|
||||
if self.addSongFromService:
|
||||
editId = self.openLyrics. \
|
||||
xmlToSong(item.xml_version)
|
||||
xml_to_song(item.xml_version)
|
||||
else:
|
||||
# Title does not match
|
||||
if self.addSongFromService:
|
||||
editId = self.openLyrics.xmlToSong(item.xml_version)
|
||||
editId = self.openLyrics.xml_to_song(item.xml_version)
|
||||
# Update service with correct song id
|
||||
if editId != 0:
|
||||
Receiver.send_message(u'service_item_update',
|
||||
|
|
|
@ -281,14 +281,15 @@ class OpenLyricsParser(object):
|
|||
element = self._add_text_to_element(u'lines', element)
|
||||
for line in unicode(verse[1]).split(u'\n'):
|
||||
self._add_text_to_element(u'line', element, line)
|
||||
print self._dump_xml(song_xml)
|
||||
self.xml_to_song(self._extract_xml(song_xml))
|
||||
return u'' #self.xml_to_song(self._extract_xml(song_xml))
|
||||
return self._extract_xml(song_xml)
|
||||
|
||||
def xml_to_song(self, xml):
|
||||
"""
|
||||
Create a Song from OpenLyrics format xml
|
||||
"""
|
||||
# No xml get out of here
|
||||
if not xml:
|
||||
return 0
|
||||
song = Song()
|
||||
if xml[:5] == u'<?xml':
|
||||
xml = xml[38:]
|
||||
|
@ -296,19 +297,27 @@ class OpenLyricsParser(object):
|
|||
properties = song_xml.properties
|
||||
song.copyright = unicode(properties.copyright.text)
|
||||
song.verse_order = unicode(properties.verseOrder.text)
|
||||
song.topics = []
|
||||
song.book = None
|
||||
theme_name = None
|
||||
try:
|
||||
song.ccli_number = unicode(properties.ccliNo.text)
|
||||
except:
|
||||
pass
|
||||
song.ccli_number = u''
|
||||
try:
|
||||
song.theme_name = unicode(properties.themes.theme)
|
||||
theme_name = unicode(properties.themes.theme)
|
||||
except:
|
||||
pass
|
||||
if theme_name:
|
||||
song.theme_name = theme_name
|
||||
else:
|
||||
song.theme_name = u''
|
||||
# Process Titles
|
||||
for title in properties.titles.title:
|
||||
if not song.title:
|
||||
song.title = title.text
|
||||
song.title = unicode(title.text)
|
||||
song.search_title = unicode(song.title)
|
||||
song.alternate_title = u''
|
||||
else:
|
||||
song.alternate_title = unicode(title.text)
|
||||
song.search_title += u'@' + song.alternate_title
|
||||
|
@ -337,7 +346,7 @@ class OpenLyricsParser(object):
|
|||
for author in properties.authors.author:
|
||||
self._process_author(author.text, song)
|
||||
self.manager.save_object(song)
|
||||
return 0
|
||||
return song.id
|
||||
|
||||
def _add_text_to_element(self, tag, parent, text=None, label=None):
|
||||
if label:
|
||||
|
|
Loading…
Reference in New Issue