forked from openlp/openlp
Fix for easyslide importer and added test.
This commit is contained in:
parent
211f93a921
commit
b5270b48a9
@ -65,7 +65,8 @@ class EasySlidesImport(SongImport):
|
||||
self._add_unicode_attribute('song_number', song.SongNumber)
|
||||
if self.song_number == '0':
|
||||
self.song_number = ''
|
||||
self._add_authors(song)
|
||||
if hasattr(song, 'Writer'):
|
||||
self._add_authors(song.Writer)
|
||||
if hasattr(song, 'Copyright'):
|
||||
self._add_copyright(song.Copyright)
|
||||
if hasattr(song, 'LicenceAdmin1'):
|
||||
@ -102,15 +103,13 @@ class EasySlidesImport(SongImport):
|
||||
if mandatory:
|
||||
self._success = False
|
||||
|
||||
def _add_authors(self, song):
|
||||
def _add_authors(self, writer):
|
||||
try:
|
||||
authors = str(song.Writer).split(',')
|
||||
self.authors = [author.strip() for author in authors if author.strip()]
|
||||
except UnicodeDecodeError:
|
||||
self.parse_author(str(writer))
|
||||
except UnicodeDecodeError as e:
|
||||
print(e)
|
||||
log.exception('Unicode decode error while decoding Writer')
|
||||
self._success = False
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
def _add_copyright(self, element):
|
||||
"""
|
||||
@ -234,11 +233,10 @@ class EasySlidesImport(SongImport):
|
||||
for [reg, vt, vn, inst] in our_verse_order:
|
||||
if self._list_has(verses, [reg, vt, vn, inst]):
|
||||
# this is false, but needs user input
|
||||
lang = None
|
||||
versetag = '%s%s' % (vt, vn)
|
||||
versetags.append(versetag)
|
||||
lines = '\n'.join(verses[reg][vt][vn][inst])
|
||||
self.verses.append([versetag, lines, lang])
|
||||
self.add_verse(lines, versetag)
|
||||
SeqTypes = {
|
||||
'p': 'P1',
|
||||
'q': 'P2',
|
||||
|
@ -0,0 +1,45 @@
|
||||
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||
|
||||
###############################################################################
|
||||
# OpenLP - Open Source Lyrics Projection #
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Copyright (c) 2008-2016 OpenLP Developers #
|
||||
# --------------------------------------------------------------------------- #
|
||||
# This program is free software; you can redistribute it and/or modify it #
|
||||
# under the terms of the GNU General Public License as published by the Free #
|
||||
# Software Foundation; version 2 of the License. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
||||
# more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License along #
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
"""
|
||||
This module contains tests for the EasySlides song importer.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from tests.helpers.songfileimport import SongImportTestHelper
|
||||
|
||||
TEST_PATH = os.path.abspath(
|
||||
os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'easyslidessongs'))
|
||||
|
||||
|
||||
class TestEasySlidesFileImport(SongImportTestHelper):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.importer_class_name = 'EasySlidesImport'
|
||||
self.importer_module_name = 'easyslides'
|
||||
super(TestEasySlidesFileImport, self).__init__(*args, **kwargs)
|
||||
|
||||
def test_song_import(self):
|
||||
"""
|
||||
Test that loading an EasySlides file works correctly on various files
|
||||
"""
|
||||
self.file_import(os.path.join(TEST_PATH, 'amazing-grace.xml'),
|
||||
self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
|
@ -23,7 +23,6 @@ This module contains tests for the VideoPsalm song importer.
|
||||
"""
|
||||
|
||||
import os
|
||||
from unittest import TestCase
|
||||
|
||||
from tests.helpers.songfileimport import SongImportTestHelper
|
||||
from tests.functional import patch
|
||||
@ -46,7 +45,7 @@ class TestSundayPlusFileImport(SongImportTestHelper):
|
||||
with patch('openlp.plugins.songs.lib.importers.sundayplus.retrieve_windows_encoding') as \
|
||||
mocked_retrieve_windows_encoding:
|
||||
mocked_retrieve_windows_encoding.return_value = 'cp1252'
|
||||
#self.file_import([os.path.join(TEST_PATH, 'Abba Fader.ptf')],
|
||||
# self.load_external_result_data(os.path.join(TEST_PATH, 'abba-fader.json')))
|
||||
self.file_import([os.path.join(TEST_PATH, 'Abba Fader.ptf')],
|
||||
self.load_external_result_data(os.path.join(TEST_PATH, 'abba-fader.json')))
|
||||
self.file_import([os.path.join(TEST_PATH, 'Amazing Grace.ptf')],
|
||||
self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
|
||||
|
32
tests/resources/easyslidessongs/Amazing Grace.json
Normal file
32
tests/resources/easyslidessongs/Amazing Grace.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Amazing Grace",
|
||||
"authors": [
|
||||
"John Newton (1725-1807)"
|
||||
],
|
||||
"verses": [
|
||||
[
|
||||
"Amazing grace! How sweet the sound\nThat saved a wretch like me;\nI once was lost, but now am found,\nWas blind, but now I see.",
|
||||
"V1"
|
||||
],
|
||||
[
|
||||
"'Twas grace that taught my heart to fear,\nAnd grace my fears relieved;\nHow precious did that grace appear,\nThe hour I first believed!",
|
||||
"V2"
|
||||
],
|
||||
[
|
||||
"Through many dangers, toils and snares\nI have already come;\n'Tis grace that brought me safe thus far,\nAnd grace will lead me home.",
|
||||
"V3"
|
||||
],
|
||||
[
|
||||
"The Lord has promised good to me,\nHis word my hope secures;\nHe will my shield and portion be\nAs long as life endures.",
|
||||
"V4"
|
||||
],
|
||||
[
|
||||
"Yes, when this heart and flesh shall fail,\nAnd mortal life shall cease,\nI shall possess within the veil\nA life of joy and peace.",
|
||||
"V5"
|
||||
],
|
||||
[
|
||||
"When we've been there a thousand years,\nBright shining as the sun,\nWe've no less days to sing God's praise\nThan when we first begun.",
|
||||
"V6"
|
||||
]
|
||||
]
|
||||
}
|
53
tests/resources/easyslidessongs/amazing-grace.xml
Normal file
53
tests/resources/easyslidessongs/amazing-grace.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<EasiSlides>
|
||||
<Item>
|
||||
<Title1>Amazing Grace</Title1>
|
||||
<Title2 />
|
||||
<Folder>English</Folder>
|
||||
<SongNumber>0</SongNumber>
|
||||
<Contents>[1]
|
||||
Amazing grace! How sweet the sound
|
||||
That saved a wretch like me;
|
||||
I once was lost, but now am found,
|
||||
Was blind, but now I see.
|
||||
[2]
|
||||
'Twas grace that taught my heart to fear,
|
||||
And grace my fears relieved;
|
||||
How precious did that grace appear,
|
||||
The hour I first believed!
|
||||
[3]
|
||||
Through many dangers, toils and snares
|
||||
I have already come;
|
||||
'Tis grace that brought me safe thus far,
|
||||
And grace will lead me home.
|
||||
[4]
|
||||
The Lord has promised good to me,
|
||||
His word my hope secures;
|
||||
He will my shield and portion be
|
||||
As long as life endures.
|
||||
[5]
|
||||
Yes, when this heart and flesh shall fail,
|
||||
And mortal life shall cease,
|
||||
I shall possess within the veil
|
||||
A life of joy and peace.
|
||||
[6]
|
||||
When we've been there a thousand years,
|
||||
Bright shining as the sun,
|
||||
We've no less days to sing God's praise
|
||||
Than when we first begun.</Contents>
|
||||
<Notations />
|
||||
<Sequence />
|
||||
<Writer>John Newton (1725-1807)</Writer>
|
||||
<Copyright />
|
||||
<Category />
|
||||
<Timing />
|
||||
<MusicKey />
|
||||
<Capo>-1</Capo>
|
||||
<LicenceAdmin1>Public Domain</LicenceAdmin1>
|
||||
<LicenceAdmin2 />
|
||||
<BookReference>SF19, MP31, TS18</BookReference>
|
||||
<UserReference />
|
||||
<FormatData />
|
||||
<Settings />
|
||||
</Item>
|
||||
</EasiSlides>
|
Loading…
Reference in New Issue
Block a user