Review: Needs Fixing
Diff comments:
> === modified file 'openlp/plugins/bibles/lib/http.py'
> --- openlp/plugins/bibles/lib/http.py 2014-05-02 06:42:17 +0000
> +++ openlp/plugins/bibles/lib/http.py 2014-06-26 09:25:08 +0000
> @@ -225,7 +225,7 @@
> url_book_name = urllib.parse.quote(book_name.encode("utf-8"))
> url_params = 'search=%s+%s&version=%s' % (url_book_name, chapter,
> version)
> soup = get_soup_for_bible_ref(
> - 'http://www.biblegateway.com/passage/?%s' % url_params,
> + 'http://legacy.biblegateway.com/passage/?%s' % url_params,
> pre_parse_regex=r'<meta name.*?/>', pre_parse_substitute='')
> if not soup:
> return None
> @@ -252,7 +252,7 @@
> """
> log.debug('BGExtract.get_books_from_http("%s")', version)
> url_params = urllib.parse.urlencode({'action': 'getVersionInfo',
> 'vid': '%s' % version})
> - reference_url = 'http://www.biblegateway.com/versions/?%s#books' %
> url_params
> + reference_url = 'http://legacy.biblegateway.com/versions/?%s#books'
> % url_params
> page = get_web_page(reference_url)
> if not page:
> send_error_message('download')
>
> === modified file 'openlp/plugins/songs/lib/cclifileimport.py'
> --- openlp/plugins/songs/lib/cclifileimport.py 2014-05-21 14:47:44
> +0000
> +++ openlp/plugins/songs/lib/cclifileimport.py 2014-06-26 09:25:08
> +0000
> @@ -64,7 +64,7 @@
> filename = str(filename)
> log.debug('Importing CCLI File: %s', filename)
> if os.path.isfile(filename):
> - detect_file = open(filename, 'r')
> + detect_file = open(filename, 'rb')
> detect_content = detect_file.read(2048)
> try:
> str(detect_content, 'utf-8')
>
> === modified file 'openlp/plugins/songs/lib/importer.py'
> --- openlp/plugins/songs/lib/importer.py 2014-06-09 10:27:17 +0000
> +++ openlp/plugins/songs/lib/importer.py 2014-06-26 09:25:08 +0000
> @@ -50,6 +50,7 @@
> from .foilpresenterimport import FoilPresenterImport
> from .zionworximport import ZionWorxImport
> from .propresenterimport import ProPresenterImport
> +from .worshipassistantimport import WorshipAssistantImport
> # Imports that might fail
>
>
> @@ -167,8 +168,9 @@
> SongsOfFellowship = 16
> SundayPlus = 17
> WordsOfWorship = 18
> - WorshipCenterPro = 19
> - ZionWorx = 20
> + WorshipAssistant = 19
> + WorshipCenterPro = 20
> + ZionWorx = 21
>
> # Set optional attribute defaults
> __defaults__ = {
> @@ -321,6 +323,16 @@
> 'prefix': 'wordsOfWorship',
> 'filter': '%s (*.wsg *.wow-song)' %
> translate('SongsPlugin.ImportWizardForm', 'Words Of Worship Song Files')
> },
> + WorshipAssistant: {
> + 'class': WorshipAssistantImport,
> + 'name': 'Worship Assistant 0',
> + 'prefix': 'worshipAssistant',
> + 'selectMode': SongFormatSelect.SingleFile,
> + 'filter': '%s (*.csv)' %
> translate('SongsPlugin.ImportWizardForm', 'Worship Assistant Files'),
> + 'comboBoxText': translate('SongsPlugin.ImportWizardForm',
> 'Worship Assistant (CSV)'),
> + 'descriptionText': translate('SongsPlugin.ImportWizardForm',
> + 'In Worship Assistant, export your
> Database to a CSV file.')
> + },
> WorshipCenterPro: {
> 'name': 'WorshipCenter Pro',
> 'prefix': 'worshipCenterPro',
> @@ -370,16 +382,17 @@
> SongFormat.SongsOfFellowship,
> SongFormat.SundayPlus,
> SongFormat.WordsOfWorship,
> + SongFormat.WorshipAssistant,
> SongFormat.WorshipCenterPro,
> SongFormat.ZionWorx
> ]
>
> @staticmethod
> - def get(format, *attributes):
> + def get(song_format, *attributes):
> """
> Return requested song format attribute(s).
>
> - :param format: A song format from SongFormat.
> + :param song_format: A song format from SongFormat.
> :param attributes: Zero or more song format attributes from
> SongFormat.
>
> Return type depends on number of supplied attributes:
> @@ -389,23 +402,23 @@
> :>1: Return tuple of requested attribute values.
> """
> if not attributes:
> - return SongFormat.__attributes__.get(format)
> + return SongFormat.__attributes__.get(song_format)
> elif len(attributes) == 1:
> default = SongFormat.__defaults__.get(attributes[0])
> - return SongFormat.__attributes__[format].get(attributes[0],
> default)
> + return SongFormat.__attributes__[song_format].get(attributes[0],
> default)
> else:
> values = []
> for attr in attributes:
> default = SongFormat.__defaults__.get(attr)
> - values.append(SongFormat.__attributes__[format].get(attr,
> default))
> +
> values.append(SongFormat.__attributes__[song_format].get(attr, default))
> return tuple(values)
>
> @staticmethod
> - def set(format, attribute, value):
> + def set(song_format, attribute, value):
> """
> Set specified song format attribute to the supplied value.
> """
> - SongFormat.__attributes__[format][attribute] = value
> + SongFormat.__attributes__[song_format][attribute] = value
>
>
> SongFormat.set(SongFormat.SongsOfFellowship, 'availability', HAS_SOF)
>
> === added file 'openlp/plugins/songs/lib/worshipassistantimport.py'
> --- openlp/plugins/songs/lib/worshipassistantimport.py 1970-01-01
> 00:00:00 +0000
> +++ openlp/plugins/songs/lib/worshipassistantimport.py 2014-06-26
> 09:25:08 +0000
> @@ -0,0 +1,172 @@
> +# -*- coding: utf-8 -*-
> +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4
> softtabstop=4
> +
> +###############################################################################
> +# OpenLP - Open Source Lyrics Projection
> #
> +#
> --------------------------------------------------------------------------- #
> +# Copyright (c) 2008-2014 Raoul Snyman
> #
> +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan
> #
> +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub,
> #
> +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer.
> #
> +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru,
> #
> +# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith,
> #
> +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock,
> #
> +# Frode Woldsund, Martin Zibricky, Patrick Zimmermann
> #
> +#
> --------------------------------------------------------------------------- #
> +# 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
> #
> +###############################################################################
> +"""
> +The :mod:`worshipassistantimport` module provides the functionality for
> importing
> +Worship Assistant songs into the OpenLP database.
> +"""
> +import chardet
> +import csv
> +import logging
> +import re
> +
> +from openlp.core.common import translate
> +from openlp.plugins.songs.lib import VerseType
> +from openlp.plugins.songs.lib.songimport import SongImport
> +
> +log = logging.getLogger(__name__)
> +
> +EMPTY_STR = 'NULL'
> +
> +
> +class WorshipAssistantImport(SongImport):
> + """
> + The :class:`WorshipAssistantImport` class provides the ability to import
> songs
> + from Worship Assistant, via a dump of the database to a CSV file.
> +
> + The following fields are in the exported CSV file:
> +
> + * ``SONGNR`` Song ID (Discarded by importer)
> + * ``TITLE`` Song title
> + * ``AUTHOR`` Song author.
> + * ``COPYRIGHT`` Copyright information
> + * ``FIRSTLINE`` Unknown (Discarded by importer)
> + * ``PRIKEY`` Primary chord key (Discarded by importer)
> + * ``ALTKEY`` Alternate chord key (Discarded by importer)
> + * ``TEMPO`` Tempo (Discarded by importer)
> + * ``FOCUS`` Unknown (Discarded by importer)
> + * ``THEME`` Theme (Discarded by importer)
> + * ``SCRIPTURE`` Associated scripture (Discarded by importer)
> + * ``ACTIVE`` Boolean value (Discarded by importer)
> + * ``SONGBOOK`` Boolean value (Discarded by importer)
> + * ``TIMESIG`` Unknown (Discarded by importer)
> + * ``INTRODUCED`` Date the song was created (Discarded by importer)
> + * ``LASTUSED`` Date the song was last used (Discarded by importer)
> + * ``TIMESUSED`` How many times the song was used (Discarded by importer)
> + * ``CCLINR`` CCLI Number
> + * ``USER1`` User Field 1 (Discarded by importer)
> + * ``USER2`` User Field 2 (Discarded by importer)
> + * ``USER3`` User Field 3 (Discarded by importer)
> + * ``USER4`` User Field 4 (Discarded by importer)
> + * ``USER5`` User Field 5 (Discarded by importer)
> + * ``ROADMAP`` Verse order used for the presentation
> + * ``FILELINK1`` Associated file 1 (Discarded by importer)
> + * ``OVERMAP`` Verse order used for printing (Discarded by importer)
> + * ``FILELINK2`` Associated file 2 (Discarded by importer)
> + * ``LYRICS`` The song lyrics used for printing (Discarded by importer,
> LYRICS2 is used instead)
> + * ``INFO`` Unknown (Discarded by importer)
> + * ``LYRICS2`` The song lyrics used for the presentation
> + * ``BACKGROUND`` Custom background (Discarded by importer)
> + """
> + def do_import(self):
> + """
> + Receive a CSV file to import.
> + """
> + # Get encoding
> + detect_file = open(self.import_source, 'rb')
> + detect_content = detect_file.read()
> + details = chardet.detect(detect_content)
> + detect_file.close()
> + songs_file = open(self.import_source, 'r',
> encoding=details['encoding'])
> +
Extra space
> + songs_reader = csv.DictReader(songs_file)
> + try:
> + records = list(songs_reader)
> + except csv.Error as e:
> + self.log_error(translate('SongsPlugin.WorshipAssistantImport',
> 'Error reading CSV file.'),
> + translate('SongsPlugin.WorshipAssistantImport',
> 'Line %d: %s') %
> + (songs_reader.line_num, e))
> + return
> + num_records = len(records)
> + log.info('%s records found in CSV file' % num_records)
> + self.import_wizard.progress_bar.setMaximum(num_records)
> + for index, record in enumerate(records, 1):
> + if self.stop_import_flag:
> + return
> + # Ensure that all keys are uppercase
> + record = dict((k.upper(), v) for k, v in record.items())
Normally we news real names!
> + # The CSV file has a line in the middle of the file where the
> headers are repeated.
> + # We need to skip this line.
> + if record['TITLE'] == "TITLE" and record['AUTHOR'] == 'AUTHOR'
> and record['LYRICS2'] == 'LYRICS2':
> + continue
> + self.set_defaults()
> + verse_order_list = []
> + try:
> + self.title = record['TITLE']
> + if record['AUTHOR'] != EMPTY_STR:
> + self.parse_author(record['AUTHOR'])
> + print(record['AUTHOR'])
> + if record['COPYRIGHT'] != EMPTY_STR:
> + self.add_copyright(record['COPYRIGHT'])
> + if record['CCLINR'] != EMPTY_STR:
> + self.ccli_number = record['CCLINR']
> + if record['ROADMAP'] != EMPTY_STR:
> + verse_order_list = record['ROADMAP'].split(',')
> + lyrics = record['LYRICS2']
> + except UnicodeDecodeError as e:
> +
> self.log_error(translate('SongsPlugin.WorshipAssistantImport', 'Record %d' %
> index),
> +
> translate('SongsPlugin.WorshipAssistantImport', 'Decoding error: %s') % e)
> + continue
> + except TypeError as e:
> +
> self.log_error(translate('SongsPlugin.WorshipAssistantImport',
> + 'File not valid WorshipAssistant
> CSV format.'), 'TypeError: %s' % e)
> + return
> + verse = ''
> + for line in lyrics.splitlines():
> + if line.startswith('['): # verse marker
> + # drop the square brackets
> + right_bracket = line.find(']')
> + content = line[1:right_bracket].lower()
> + match = re.match('(\D*)(\d+)', content)
> + if match is not None:
> + verse_tag = match.group(1)
> + verse_num = match.group(2)
> + else:
> + # otherwise we assume number 1 and take the whole
> prefix as the verse tag
> + verse_tag = content
> + verse_num = '1'
> + verse_index = VerseType.from_loose_input(verse_tag) if
> verse_tag else 0
> + verse_tag = VerseType.tags[verse_index]
> + # Update verse order when the verse name has changed
> + if content != verse_tag + verse_num:
> + for i in range(len(verse_order_list)):
> + if verse_order_list[i].lower() ==
> content.lower():
> + verse_order_list[i] = verse_tag + verse_num
> + elif line and not line.isspace():
> + verse += line + '\n'
> + elif verse:
> + self.add_verse(verse, verse_tag+verse_num)
> + verse = ''
> + if verse:
> + self.add_verse(verse, verse_tag+verse_num)
> + if verse_order_list:
> + self.verse_order_list = verse_order_list
> + if not self.finish():
> +
> self.log_error(translate('SongsPlugin.WorshipAssistantImport', 'Record %d') %
> index
> + + (': "' + self.title + '"' if self.title
> else ''))
> + songs_file.close()
>
> === modified file
> 'tests/functional/openlp_plugins/songs/test_opensongimport.py'
> --- tests/functional/openlp_plugins/songs/test_opensongimport.py
> 2014-04-30 20:39:40 +0000
> +++ tests/functional/openlp_plugins/songs/test_opensongimport.py
> 2014-06-26 09:25:08 +0000
> @@ -52,11 +52,11 @@
> """
> Test that loading an OpenSong file works correctly on various files
> """
> - self.file_import(os.path.join(TEST_PATH, 'Amazing Grace'),
> + self.file_import([os.path.join(TEST_PATH, 'Amazing Grace')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
> - self.file_import(os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer'),
> + self.file_import([os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer.json')))
> - self.file_import(os.path.join(TEST_PATH, 'One, Two, Three, Four,
> Five'),
> + self.file_import([os.path.join(TEST_PATH, 'One, Two, Three, Four,
> Five')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'One, Two, Three,
> Four, Five.json')))
>
>
>
> === modified file
> 'tests/functional/openlp_plugins/songs/test_propresenterimport.py'
> --- tests/functional/openlp_plugins/songs/test_propresenterimport.py
> 2014-06-09 10:27:17 +0000
> +++ tests/functional/openlp_plugins/songs/test_propresenterimport.py
> 2014-06-26 09:25:08 +0000
> @@ -50,5 +50,5 @@
> """
> Test that loading an ProPresenter file works correctly
> """
> - self.file_import(os.path.join(TEST_PATH, 'Amazing Grace.pro4'),
> + self.file_import([os.path.join(TEST_PATH, 'Amazing Grace.pro4')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
>
> === modified file
> 'tests/functional/openlp_plugins/songs/test_songshowplusimport.py'
> --- tests/functional/openlp_plugins/songs/test_songshowplusimport.py
> 2014-05-11 04:45:30 +0000
> +++ tests/functional/openlp_plugins/songs/test_songshowplusimport.py
> 2014-06-26 09:25:08 +0000
> @@ -53,11 +53,11 @@
> """
> Test that loading a SongShow Plus file works correctly on various
> files
> """
> - self.file_import(os.path.join(TEST_PATH, 'Amazing Grace.sbsong'),
> + self.file_import([os.path.join(TEST_PATH, 'Amazing Grace.sbsong')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
> - self.file_import(os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer.sbsong'),
> + self.file_import([os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer.sbsong')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'Beautiful Garden Of
> Prayer.json')))
> - self.file_import(os.path.join(TEST_PATH, 'a mighty fortress is our
> god.sbsong'),
> + self.file_import([os.path.join(TEST_PATH, 'a mighty fortress is our
> god.sbsong')],
>
> self.load_external_result_data(os.path.join(TEST_PATH, 'a mighty fortress is
> our god.json')))
>
>
>
> === added file
> 'tests/functional/openlp_plugins/songs/test_worshipassistantimport.py'
> --- tests/functional/openlp_plugins/songs/test_worshipassistantimport.py
> 1970-01-01 00:00:00 +0000
> +++ tests/functional/openlp_plugins/songs/test_worshipassistantimport.py
> 2014-06-26 09:25:08 +0000
> @@ -0,0 +1,56 @@
> +# -*- coding: utf-8 -*-
> +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4
> softtabstop=4
> +
> +###############################################################################
> +# OpenLP - Open Source Lyrics Projection
> #
> +#
> --------------------------------------------------------------------------- #
> +# Copyright (c) 2008-2013 Raoul Snyman
> #
> +# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan
> #
> +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub,
> #
> +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer.
> #
> +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru,
> #
> +# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith,
> #
> +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock,
> #
> +# Frode Woldsund, Martin Zibricky, Patrick Zimmermann
> #
> +#
> --------------------------------------------------------------------------- #
> +# 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
> #
> +###############################################################################
> +"""
> +The :mod:`worshipassistantimport` module provides the functionality for
> importing
> +WorshipAssistant song files into the current installation database.
> +"""
> +
> +import os
> +
> +from tests.helpers.songfileimport import SongImportTestHelper
> +
> +TEST_PATH = os.path.abspath(
> + os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources',
> 'worshipassistantsongs'))
> +
> +
> +class TestWorshipAssistantFileImport(SongImportTestHelper):
> +
> + def __init__(self, *args, **kwargs):
> + self.importer_class_name = 'WorshipAssistantImport'
> + self.importer_module_name = 'worshipassistantimport'
> + super(TestWorshipAssistantFileImport, self).__init__(*args, **kwargs)
> +
> + def test_song_import(self):
> + """
> + Test that loading an Worship Assistant file works correctly
> + """
> + self.file_import(os.path.join(TEST_PATH, 'du_herr.csv'),
> +
> self.load_external_result_data(os.path.join(TEST_PATH, 'du_herr.json')))
> + self.file_import(os.path.join(TEST_PATH, 'would_you_be_free.csv'),
> +
> self.load_external_result_data(os.path.join(TEST_PATH,
> 'would_you_be_free.json')))
>
> === modified file 'tests/helpers/songfileimport.py'
> --- tests/helpers/songfileimport.py 2014-06-04 04:54:44 +0000
> +++ tests/helpers/songfileimport.py 2014-06-26 09:25:08 +0000
> @@ -95,7 +95,7 @@
> importer.topics = []
>
> # WHEN: Importing the source file
> - importer.import_source = [source_file_name]
> + importer.import_source = source_file_name
> add_verse_calls = self._get_data(result_data, 'verses')
> author_calls = self._get_data(result_data, 'authors')
> ccli_number = self._get_data(result_data, 'ccli_number')
>
> === added directory 'tests/resources/worshipassistantsongs'
> === added file 'tests/resources/worshipassistantsongs/du_herr.csv'
> --- tests/resources/worshipassistantsongs/du_herr.csv 1970-01-01 00:00:00
> +0000
> +++ tests/resources/worshipassistantsongs/du_herr.csv 2014-06-26 09:25:08
> +0000
> @@ -0,0 +1,30 @@
> +"SongID","SongNr","Title","Author","Copyright","FirstLine","PriKey","AltKey","Tempo","Focus","Theme","Scripture","Active","Songbook","TimeSig","Introduced","LastUsed","TimesUsed","CCLINr","User1","User2","User3","User4","User5","Roadmap","Overmap","FileLink1","FileLink2","Updated","Lyrics","Info","Lyrics2","Background"
> +"4ee399dc-edda-4aa9-891e-a859ca093c78","NULL","Du, Herr, verläßt mich
> nicht","Carl Brockhaus / Johann Georg Bäßler
> 1806","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","1","1","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2014-06-25
> 12:15:28.317","","NULL","[1]
> +Du, Herr, verläßt mich nicht.
> +Auf Dich mein Herz allein vertraut,
> +Mein Auge glaubend auf Dich schaut.
> +Du bist mein Heil, mein Licht,
> +Mein Fels, mein sichrer Hort.
> +Bin ich versucht, gibt's Not und Leid,
> +Du bleibst mein Trost, mein Arm im Streit,
> +Mein Licht am dunklen Ort.
> +
> +[2]
> +Ich weiß, daß Du mich liebst.
> +Bist mir in jeder Lage nah',
> +Wohin ich gehe – Du bist da,
> +Ja, Du mir alles gibst.
> +Ich überlaß mich Dir;
> +Denn Du, Herr, kennst mich ganz und gar
> +Und führst mich sicher, wunderbar,
> +Und bist selbst alles mir.
> +
> +[3]
> +In dieser Wüste hier
> +Find't nirgend meine Seele Ruh',
> +Denn meine Ruh' bist, Jesu, Du.
> +Wohl mir, ich geh' zu Dir!
> +Bald werd' ich bei Dir sein,
> +Bald mit den Deinen ewiglich
> +Anbeten, loben, preisen Dich,
> +Mich Deiner stets erfreun.","NULL"
>
> === added file 'tests/resources/worshipassistantsongs/du_herr.json'
> --- tests/resources/worshipassistantsongs/du_herr.json 1970-01-01
> 00:00:00 +0000
> +++ tests/resources/worshipassistantsongs/du_herr.json 2014-06-26
> 09:25:08 +0000
> @@ -0,0 +1,21 @@
> +{
> + "authors": [
> + "Carl Brockhaus / Johann Georg Bäßler 1806"
> + ],
> + "title": "Du, Herr, verläßt mich nicht",
> + "verse_order_list": [],
> + "verses": [
> + [
> + "Du, Herr, verläßt mich nicht.\nAuf Dich mein Herz allein
> vertraut,\nMein Auge glaubend auf Dich schaut.\nDu bist mein Heil, mein
> Licht,\nMein Fels, mein sichrer Hort.\nBin ich versucht, gibt's Not und
> Leid,\nDu bleibst mein Trost, mein Arm im Streit,\nMein Licht am dunklen
> Ort.\n",
> + "v1"
> + ],
> + [
> + "Ich weiß, daß Du mich liebst.\nBist mir in jeder Lage
> nah',\nWohin ich gehe – Du bist da,\nJa, Du mir alles gibst.\nIch überlaß
> mich Dir;\nDenn Du, Herr, kennst mich ganz und gar\nUnd führst mich sicher,
> wunderbar,\nUnd bist selbst alles mir.\n",
> + "v2"
> + ],
> + [
> + "In dieser Wüste hier\nFind't nirgend meine Seele Ruh',\nDenn
> meine Ruh' bist, Jesu, Du.\nWohl mir, ich geh' zu Dir!\nBald werd' ich bei
> Dir sein,\nBald mit den Deinen ewiglich\nAnbeten, loben, preisen Dich,\nMich
> Deiner stets erfreun.\n",
> + "v3"
> + ]
> + ]
> +}
>
> === added file 'tests/resources/worshipassistantsongs/would_you_be_free.csv'
> --- tests/resources/worshipassistantsongs/would_you_be_free.csv
> 1970-01-01 00:00:00 +0000
> +++ tests/resources/worshipassistantsongs/would_you_be_free.csv
> 2014-06-26 09:25:08 +0000
> @@ -0,0 +1,30 @@
> +SONGNR,TITLE,AUTHOR,COPYRIGHT,FIRSTLINE,PRIKEY,ALTKEY,TEMPO,FOCUS,THEME,SCRIPTURE,ACTIVE,SONGBOOK,TIMESIG,INTRODUCED,LASTUSED,TIMESUSED,CCLINR,USER1,USER2,USER3,USER4,USER5,ROADMAP,FILELINK1,OVERMAP,FILELINK2,LYRICS,INFO,LYRICS2,Background
> +"7","Would You Be Free","Jones, Lewis E.","Public Domain","Would you be free
> from your burden of sin?","G","","Moderate","Only To
> Others","","","N","Y","","1899-12-30","1899-12-30","","","","","","","","1,C,1","","","",".G
> C G
> + Would you be free from your burden of sin?
> +. D D7 G
> + There's power in the blood, power in the blood
> +. C G
> + Would you o'er evil a victory win?
> +. D D7 G
> + There's wonderful power in the blood
> +
> +.G C G
> + There is power, power, wonder working power
> +.D G
> + In the blood of the Lamb
> +. C G
> + There is power, power, wonder working power
> +. D G
> + In the precious blood of the Lamb
> +","","[1]
> +Would you be free from your burden of sin?
> +There's power in the blood, power in the blood
> +Would you o'er evil a victory win?
> +There's wonderful power in the blood
> +
> +[C]
> +There is power, power, wonder working power
> +In the blood of the Lamb
> +There is power, power, wonder working power
> +In the precious blood of the Lamb
> +",""
>
> === added file 'tests/resources/worshipassistantsongs/would_you_be_free.json'
> --- tests/resources/worshipassistantsongs/would_you_be_free.json
> 1970-01-01 00:00:00 +0000
> +++ tests/resources/worshipassistantsongs/would_you_be_free.json
> 2014-06-26 09:25:08 +0000
> @@ -0,0 +1,19 @@
> +{
> + "authors": [
> + "Jones",
> + "Lewis E"
> + ],
> + "title": "Would You Be Free",
> + "verse_order_list": ["v1", "c1", "v1"],
> + "copyright": "Public Domain",
> + "verses": [
> + [
> + "Would you be free from your burden of sin? \nThere's power in
> the blood, power in the blood \nWould you o'er evil a victory win? \nThere's
> wonderful power in the blood \n",
> + "v1"
> + ],
> + [
> + "There is power, power, wonder working power \nIn the blood of
> the Lamb \nThere is power, power, wonder working power \nIn the precious
> blood of the Lamb \n",
> + "c1"
> + ]
> + ]
> +}
>
> === modified file 'tests/utils/test_bzr_tags.py'
> --- tests/utils/test_bzr_tags.py 2014-05-03 15:34:13 +0000
> +++ tests/utils/test_bzr_tags.py 2014-06-26 09:25:08 +0000
> @@ -50,10 +50,6 @@
> ['1.9.11', '2039'],
> ['1.9.12', '2063'],
> ['2.0', '2118'],
> - ['2.0.1', '?'],
> - ['2.0.2', '?'],
> - ['2.0.3', '?'],
> - ['2.0.4', '?'],
> ['2.1.0', '2119']
> ]
>
>
--
https://code.launchpad.net/~sam92/openlp/worshipassistant-import/+merge/224571
Your team OpenLP Core is subscribed to branch lp:openlp.
_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openlp-core
More help : https://help.launchpad.net/ListHelp