예제 #1
0
 def first_time(self):
     """
     If the first time wizard has run, this function is run to import all the new songs into the database.
     """
     self.application.process_events()
     self.on_tools_reindex_item_triggered()
     self.application.process_events()
     db_dir = os.path.join(gettempdir(), 'openlp')
     if not os.path.exists(db_dir):
         return
     song_dbs = []
     song_count = 0
     for sfile in os.listdir(db_dir):
         if sfile.startswith('songs_') and sfile.endswith('.sqlite'):
             self.application.process_events()
             song_dbs.append(os.path.join(db_dir, sfile))
             song_count += self._count_songs(os.path.join(db_dir, sfile))
     if not song_dbs:
         return
     self.application.process_events()
     progress = QtGui.QProgressDialog(self.main_window)
     progress.setWindowModality(QtCore.Qt.WindowModal)
     progress.setWindowTitle(translate('OpenLP.Ui', 'Importing Songs'))
     progress.setLabelText(translate('OpenLP.Ui', 'Starting import...'))
     progress.setCancelButton(None)
     progress.setRange(0, song_count)
     progress.setMinimumDuration(0)
     progress.forceShow()
     self.application.process_events()
     for db in song_dbs:
         importer = OpenLPSongImport(self.manager, filename=db)
         importer.do_import(progress)
         self.application.process_events()
     progress.setValue(song_count)
     self.media_item.on_search_text_button_clicked()
예제 #2
0
 def first_time(self):
     """
     If the first time wizard has run, this function is run to import all the new songs into the database.
     """
     self.application.process_events()
     self.on_tools_reindex_item_triggered()
     self.application.process_events()
     db_dir = os.path.join(gettempdir(), 'openlp')
     if not os.path.exists(db_dir):
         return
     song_dbs = []
     song_count = 0
     for sfile in os.listdir(db_dir):
         if sfile.startswith('songs_') and sfile.endswith('.sqlite'):
             self.application.process_events()
             song_dbs.append(os.path.join(db_dir, sfile))
             song_count += SongsPlugin._count_songs(os.path.join(db_dir, sfile))
     if not song_dbs:
         return
     self.application.process_events()
     progress = QtWidgets.QProgressDialog(self.main_window)
     progress.setWindowModality(QtCore.Qt.WindowModal)
     progress.setWindowTitle(translate('OpenLP.Ui', 'Importing Songs'))
     progress.setLabelText(translate('OpenLP.Ui', 'Starting import...'))
     progress.setCancelButton(None)
     progress.setRange(0, song_count)
     progress.setMinimumDuration(0)
     progress.forceShow()
     self.application.process_events()
     for db in song_dbs:
         importer = OpenLPSongImport(self.manager, filename=db)
         importer.do_import(progress)
         self.application.process_events()
     progress.setValue(song_count)
     self.media_item.on_search_text_button_clicked()
예제 #3
0
 def first_time(self):
     """
     If the first time wizard has run, this function is run to import all the new songs into the database.
     """
     self.application.process_events()
     self.on_tools_reindex_item_triggered()
     self.application.process_events()
     db_dir_path = Path(gettempdir(), 'openlp')
     if not db_dir_path.exists():
         return
     song_db_paths = []
     song_count = 0
     for db_file_path in db_dir_path.glob('songs_*.sqlite'):
         self.application.process_events()
         song_db_paths.append(db_file_path)
         song_count += SongsPlugin._count_songs(db_file_path)
     if not song_db_paths:
         return
     self.application.process_events()
     progress = QtWidgets.QProgressDialog(self.main_window)
     progress.setWindowModality(QtCore.Qt.WindowModal)
     progress.setWindowTitle(translate('SongsPlugin', 'Importing Songs'))
     progress.setLabelText(UiStrings().StartingImport)
     progress.setCancelButton(None)
     progress.setRange(0, song_count)
     progress.setMinimumDuration(0)
     progress.forceShow()
     self.application.process_events()
     for db_path in song_db_paths:
         importer = OpenLPSongImport(self.manager, file_path=db_path)
         importer.do_import(progress)
         self.application.process_events()
     progress.setValue(song_count)
     self.media_item.on_search_text_button_clicked()
예제 #4
0
    def test_invalid_import_source(self):
        """
        Test OpenLPSongImport.do_import handles different invalid import_source values
        """
        # GIVEN: A mocked out SongImport class, and a mocked out "manager"
        with patch('openlp.plugins.songs.lib.importers.openlp.SongImport'):
            mocked_manager = MagicMock()
            mocked_import_wizard = MagicMock()
            importer = OpenLPSongImport(mocked_manager, filenames=[])
            importer.import_wizard = mocked_import_wizard
            importer.stop_import_flag = True

            # WHEN: Import source is not a list
            for source in ['not a list', 0]:
                importer.import_source = source

                # THEN: do_import should return none and the progress bar maximum should not be set.
                self.assertIsNone(importer.do_import(), 'do_import should return None when import_source is not a list')
                self.assertEqual(mocked_import_wizard.progress_bar.setMaximum.called, False,
                                 'setMaximum on import_wizard.progress_bar should not have been called')
예제 #5
0
    def test_invalid_import_source(self):
        """
        Test OpenLPSongImport.do_import handles different invalid import_source values
        """
        # GIVEN: A mocked out SongImport class, and a mocked out "manager"
        with patch('openlp.plugins.songs.lib.importers.openlp.SongImport'):
            mocked_manager = MagicMock()
            mocked_import_wizard = MagicMock()
            importer = OpenLPSongImport(mocked_manager, filenames=[])
            importer.import_wizard = mocked_import_wizard
            importer.stop_import_flag = True

            # WHEN: Import source is not a list
            for source in ['not a list', 0]:
                importer.import_source = source

                # THEN: do_import should return none and the progress bar maximum should not be set.
                self.assertIsNone(
                    importer.do_import(),
                    'do_import should return None when import_source is not a list'
                )
                self.assertEqual(
                    mocked_import_wizard.progress_bar.setMaximum.called, False,
                    'setMaximum on import_wizard.progress_bar should not have been called'
                )
예제 #6
0
    def test_create_importer(self):
        """
        Test creating an instance of the OpenLP database importer
        """
        # GIVEN: A mocked out SongImport class, and a mocked out "manager"
        with patch('openlp.plugins.songs.lib.importers.openlp.SongImport'):
            mocked_manager = MagicMock()

            # WHEN: An importer object is created
            importer = OpenLPSongImport(mocked_manager, filenames=[])

            # THEN: The importer object should not be None
            self.assertIsNotNone(importer, 'Import should not be none')