← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~tomasgroth/openlp/25bugfixes5 into lp:openlp

 

Tomas Groth has proposed merging lp:~tomasgroth/openlp/25bugfixes5 into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  Bug #1618489 in OpenLP: "Improper characters in Mediashout import cause traceback"
  https://bugs.launchpad.net/openlp/+bug/1618489

For more details, see:
https://code.launchpad.net/~tomasgroth/openlp/25bugfixes5/+merge/306676

Fixes getting bible texts from CrossWalk
Fix to handling of form feed char and vertical tab char.
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~tomasgroth/openlp/25bugfixes5 into lp:openlp.
=== modified file 'openlp/plugins/bibles/lib/importers/http.py'
--- openlp/plugins/bibles/lib/importers/http.py	2016-08-20 20:32:25 +0000
+++ openlp/plugins/bibles/lib/importers/http.py	2016-09-23 22:02:08 +0000
@@ -493,7 +493,7 @@
         for verse in verses_div:
             self.application.process_events()
             verse_number = int(verse.find('strong').contents[0])
-            verse_span = verse.find('span')
+            verse_span = verse.find('span', class_='verse-%d' % verse_number)
             tags_to_remove = verse_span.find_all(['a', 'sup'])
             for tag in tags_to_remove:
                 tag.decompose()

=== modified file 'openlp/plugins/songs/lib/importers/mediashout.py'
--- openlp/plugins/songs/lib/importers/mediashout.py	2016-06-14 20:36:51 +0000
+++ openlp/plugins/songs/lib/importers/mediashout.py	2016-09-23 22:02:08 +0000
@@ -101,7 +101,7 @@
             self.song_book_name = song.SongID
         for verse in verses:
             tag = VERSE_TAGS[verse.Type] + str(verse.Number) if verse.Type < len(VERSE_TAGS) else 'O'
-            self.add_verse(verse.Text, tag)
+            self.add_verse(self.tidy_text(verse.Text), tag)
         for order in verse_order:
             if order.Type < len(VERSE_TAGS):
                 self.verse_order_list.append(VERSE_TAGS[order.Type] + str(order.Number))

=== modified file 'openlp/plugins/songs/lib/importers/songimport.py'
--- openlp/plugins/songs/lib/importers/songimport.py	2016-05-27 08:13:14 +0000
+++ openlp/plugins/songs/lib/importers/songimport.py	2016-09-23 22:02:08 +0000
@@ -140,10 +140,13 @@
         text = text.replace('\u2026', '...')
         text = text.replace('\u2013', '-')
         text = text.replace('\u2014', '-')
+        # Replace vertical tab with 2 linebreaks
+        text = text.replace('\v', '\n\n')
+        # Replace form feed (page break) with 2 linebreaks
+        text = text.replace('\f', '\n\n')
         # Remove surplus blank lines, spaces, trailing/leading spaces
-        text = re.sub(r'[ \t\v]+', ' ', text)
+        text = re.sub(r'[ \t]+', ' ', text)
         text = re.sub(r' ?(\r\n?|\n) ?', '\n', text)
-        text = re.sub(r' ?(\n{5}|\f)+ ?', '\f', text)
         return text
 
     def process_song_text(self, text):

=== modified file 'tests/functional/openlp_plugins/songs/test_mediashout.py'
--- tests/functional/openlp_plugins/songs/test_mediashout.py	2016-08-14 20:58:27 +0000
+++ tests/functional/openlp_plugins/songs/test_mediashout.py	2016-09-23 22:02:08 +0000
@@ -22,15 +22,20 @@
 """
 Test the MediaShout importer
 """
-from unittest import TestCase
+from unittest import TestCase, skipUnless
 from collections import namedtuple
 
 from openlp.core.common import Registry
-from openlp.plugins.songs.lib.importers.mediashout import MediaShoutImport
+try:
+    from openlp.plugins.songs.lib.importers.mediashout import MediaShoutImport
+    CAN_RUN_TESTS = True
+except ImportError:
+    CAN_RUN_TESTS = False
 
 from tests.functional import MagicMock, patch, call
 
 
+@skipUnless(CAN_RUN_TESTS, 'Not Windows, skipping test')
 class TestMediaShoutImport(TestCase):
     """
     Test the MediaShout importer

=== modified file 'tests/interfaces/openlp_plugins/bibles/test_lib_http.py'
--- tests/interfaces/openlp_plugins/bibles/test_lib_http.py	2016-08-20 20:00:50 +0000
+++ tests/interfaces/openlp_plugins/bibles/test_lib_http.py	2016-09-23 22:02:08 +0000
@@ -163,3 +163,19 @@
         # THEN: The list should not be None, and some known bibles should be there
         self.assertIsNotNone(bibles)
         self.assertIn(('Giovanni Diodati 1649 (Italian)', 'gdb', 'it'), bibles)
+
+    def test_crosswalk_get_verse_text(self):
+        """
+        Test verse text from Crosswalk.com
+        """
+        # GIVEN: A new Crosswalk extraction class
+        handler = CWExtract()
+
+        # WHEN: downloading NIV Genesis from Crosswalk
+        niv_genesis_chapter_one = handler.get_bible_chapter('niv', 'Genesis', 1)
+
+        # THEN: The verse list should contain the verses
+        self.assertTrue(niv_genesis_chapter_one.has_verse_list())
+        self.assertEquals('In the beginning God created the heavens and the earth.',
+                          niv_genesis_chapter_one.verse_list[1],
+                          'The first chapter of genesis should have been fetched.')


References