Make zionworx importer work with python3.

This commit is contained in:
Tomas Groth 2015-10-28 21:50:32 +00:00
parent 83d57d81af
commit 36aa35b260
4 changed files with 102 additions and 7 deletions

View File

@ -75,7 +75,8 @@ class ZionWorxImport(SongImport):
"""
Receive a CSV file (from a ZionWorx database dump) to import.
"""
with open(self.import_source, 'rb') as songs_file:
# Encoding should always be ISO-8859-1
with open(self.import_source, 'rt', encoding='ISO-8859-1') as songs_file:
field_names = ['SongNum', 'Title1', 'Title2', 'Lyrics', 'Writer', 'Copyright', 'Keywords',
'DefaultStyle']
songs_reader = csv.DictReader(songs_file, field_names)
@ -112,10 +113,10 @@ class ZionWorxImport(SongImport):
if line and not line.isspace():
verse += line + '\n'
elif verse:
self.add_verse(verse)
self.add_verse(verse, 'v')
verse = ''
if verse:
self.add_verse(verse)
self.add_verse(verse, 'v')
title = self.title
if not self.finish():
self.log_error(translate('SongsPlugin.ZionWorxImport', 'Record %d') % index +
@ -123,8 +124,7 @@ class ZionWorxImport(SongImport):
def _decode(self, str):
"""
Decodes CSV input to unicode, stripping all control characters (except new lines).
Strips all control characters (except new lines).
"""
# This encoding choice seems OK. ZionWorx has no option for setting the
# encoding for its songs, so we assume encoding is always the same.
return str(str, 'cp1252').translate(CONTROL_CHARS_MAP)
# ZionWorx has no option for setting the encoding for its songs, so we assume encoding is always the same.
return str.translate(CONTROL_CHARS_MAP)

View File

@ -22,14 +22,19 @@
"""
This module contains tests for the ZionWorx song importer.
"""
import os
from unittest import TestCase
from tests.functional import MagicMock, patch
from tests.helpers.songfileimport import SongImportTestHelper
from openlp.plugins.songs.lib.importers.zionworx import ZionWorxImport
from openlp.plugins.songs.lib.importers.songimport import SongImport
from openlp.core.common import Registry
TEST_PATH = os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'zionworxsongs'))
class TestZionWorxImport(TestCase):
"""
@ -54,3 +59,18 @@ class TestZionWorxImport(TestCase):
# THEN: The importer should be an instance of SongImport
self.assertIsInstance(importer, SongImport)
class TestZionWorxFileImport(SongImportTestHelper):
def __init__(self, *args, **kwargs):
self.importer_class_name = 'ZionWorxImport'
self.importer_module_name = 'zionworx'
super(TestZionWorxFileImport, self).__init__(*args, **kwargs)
def test_song_import(self):
"""
Test that loading an ZionWorx file works correctly on various files
"""
self.file_import(os.path.join(TEST_PATH, 'zionworx.csv'),
self.load_external_result_data(os.path.join(TEST_PATH, 'zionworx.json')))

View File

@ -0,0 +1,45 @@
"1","Crown Him With Many Crowns",,"Crown him with many crowns,
The Lamb upon His throne;
Hark, how the heavenly anthem drowns
All music but its own!
Awake, my soul, and sing
Of Him who died for thee,
And hail Him as thy matchless King
Through all eternity.
Crown Him the Lord of life,
Who triumphed o'er the grave
And rose victorious in the strife
For those He came to save:
His glories now we sing,
Who died and rose on high,
Who died eternal life to bring
And lives that death may die.
Crown Him the Lord of love;
Behold His hands and side,
Those wounds yet visible above
In beauty glorified:
No angel in the sky
Can fully bear that sight,
But downward bends His burning eye
At mysteries so bright.
Crown Him the Lord of peace,
Whose power a sceptre sways
From pole to pole, that wars may cease,
And all be prayer and praise:
His reign shall know no end,
And round His piercèd feet
Fair flowers of paradise extend
Their fragrance ever sweet.
Crown Him the Lord of years,
The Potentate of time,
Creator of the rolling spheres,
Ineffably sublime!
All hail, Redeemer, hail!
For Thou hast died for me;
Thy praise shall never, never fail
Throughout eternity.
","Matthew Bridges","Public Domain",,
1 1 Crown Him With Many Crowns Crown him with many crowns, The Lamb upon His throne; Hark, how the heavenly anthem drowns All music but its own! Awake, my soul, and sing Of Him who died for thee, And hail Him as thy matchless King Through all eternity. Crown Him the Lord of life, Who triumphed o'er the grave And rose victorious in the strife For those He came to save: His glories now we sing, Who died and rose on high, Who died eternal life to bring And lives that death may die. Crown Him the Lord of love; Behold His hands and side, Those wounds yet visible above In beauty glorified: No angel in the sky Can fully bear that sight, But downward bends His burning eye At mysteries so bright. Crown Him the Lord of peace, Whose power a sceptre sways From pole to pole, that wars may cease, And all be prayer and praise: His reign shall know no end, And round His piercèd feet Fair flowers of paradise extend Their fragrance ever sweet. Crown Him the Lord of years, The Potentate of time, Creator of the rolling spheres, Ineffably sublime! All hail, Redeemer, hail! For Thou hast died for me; Thy praise shall never, never fail Throughout eternity. Matthew Bridges Public Domain

View File

@ -0,0 +1,30 @@
{
"authors": [
"Matthew Bridges"
],
"copyright": "Public Domain",
"title": "Crown Him With Many Crowns",
"verse_order_list": [],
"verses": [
[
"Crown him with many crowns,\nThe Lamb upon His throne;\nHark, how the heavenly anthem drowns\nAll music but its own!\nAwake, my soul, and sing\nOf Him who died for thee,\nAnd hail Him as thy matchless King\nThrough all eternity.\n",
"v"
],
[
"Crown Him the Lord of life,\nWho triumphed o'er the grave\nAnd rose victorious in the strife\nFor those He came to save:\nHis glories now we sing,\nWho died and rose on high,\nWho died eternal life to bring\nAnd lives that death may die.\n",
"v"
],
[
"Crown Him the Lord of love;\nBehold His hands and side,\nThose wounds yet visible above\nIn beauty glorified:\nNo angel in the sky\nCan fully bear that sight,\nBut downward bends His burning eye\nAt mysteries so bright.\n",
"v"
],
[
"Crown Him the Lord of peace,\nWhose power a sceptre sways\nFrom pole to pole, that wars may cease,\nAnd all be prayer and praise:\nHis reign shall know no end,\nAnd round His piercèd feet\nFair flowers of paradise extend\nTheir fragrance ever sweet.\n",
"v"
],
[
"Crown Him the Lord of years,\nThe Potentate of time,\nCreator of the rolling spheres,\nIneffably sublime!\nAll hail, Redeemer, hail!\nFor Thou hast died for me;\nThy praise shall never, never fail\nThroughout eternity.\n",
"v"
]
]
}