Songs get created correctly and displays refreshed

This commit is contained in:
Tim Bentley 2010-11-29 16:02:41 +00:00
parent 2c3c0f2255
commit cc9ef10821
4 changed files with 29 additions and 14 deletions

View File

@ -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):
"""

View File

@ -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())

View File

@ -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',

View File

@ -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: