def get_data_path_with_custom_location_test(self):
     """
     Test the AppLocation.get_data_path() method when a custom location is set in the settings
     """
     with patch(u'openlp.core.utils.Settings') as mocked_class,\
          patch(u'openlp.core.utils.os') as mocked_os:
         # GIVEN: A mocked out Settings class which returns a custom data location
         mocked_settings = mocked_class.return_value
         mocked_settings.contains.return_value = True
         mocked_settings.value.return_value.toString.return_value = u'custom/dir'
         mocked_os.path.normpath.return_value = u'custom/dir'
         # WHEN: we call AppLocation.get_data_path()
         data_path = AppLocation.get_data_path()
         # THEN: the mocked Settings methods were called and the value returned was our set up value
         mocked_settings.contains.assert_called_with(u'advanced/data path')
         mocked_settings.value.assert_called_with(u'advanced/data path')
         assert data_path == u'custom/dir', u'Result should be "custom/dir"'
 def get_data_path_test(self):
     """
     Test the AppLocation.get_data_path() method
     """
     with patch(u'openlp.core.utils.Settings') as mocked_class, \
          patch(u'openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \
          patch(u'openlp.core.utils.check_directory_exists') as mocked_check_directory_exists, \
          patch(u'openlp.core.utils.os') as mocked_os:
         # GIVEN: A mocked out Settings class and a mocked out AppLocation.get_directory()
         mocked_settings = mocked_class.return_value
         mocked_settings.contains.return_value = False
         mocked_get_directory.return_value = u'test/dir'
         mocked_check_directory_exists.return_value = True
         mocked_os.path.normpath.return_value = u'test/dir'
         # WHEN: we call AppLocation.get_data_path()
         data_path = AppLocation.get_data_path()
         # THEN: check that all the correct methods were called, and the result is correct
         mocked_settings.contains.assert_called_with(u'advanced/data path')
         mocked_get_directory.assert_called_with(AppLocation.DataDir)
         mocked_check_directory_exists.assert_called_with(u'test/dir')
         assert data_path == u'test/dir', u'Result should be "test/dir"'
    def get_files(section=None, extension=None):
        """
        Get a list of files from the data files path.

        ``section``
            Defaults to *None*. The section of code getting the files - used to load from a section's data subdirectory.

        ``extension``
            Defaults to *None*. The extension to search for.
        """
        path = AppLocation.get_data_path()
        if section:
            path = os.path.join(path, section)
        try:
            files = os.listdir(path)
        except OSError:
            return []
        if extension:
            return [filename for filename in files if extension == os.path.splitext(filename)[1]]
        else:
            # no filtering required
            return files
Exemple #4
0
 def load(self):
     """
     Load settings from disk.
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     # The max recent files value does not have an interface and so never
     # gets actually stored in the settings therefore the default value of
     # 20 will always be used.
     self.recent_spin_box.setMaximum(settings.value('max recent files'))
     self.recent_spin_box.setValue(settings.value('recent file count'))
     self.media_plugin_check_box.setChecked(settings.value('save current plugin'))
     self.double_click_live_check_box.setChecked(settings.value('double click live'))
     self.single_click_preview_check_box.setChecked(settings.value('single click preview'))
     self.expand_service_item_check_box.setChecked(settings.value('expand service item'))
     self.enable_auto_close_check_box.setChecked(settings.value('enable exit confirmation'))
     self.hide_mouse_check_box.setChecked(settings.value('hide mouse'))
     self.service_name_day.setCurrentIndex(settings.value('default service day'))
     self.service_name_time.setTime(QtCore.QTime(settings.value('default service hour'),
         settings.value('default service minute')))
     self.should_update_service_name_example = True
     self.service_name_edit.setText(settings.value('default service name'))
     default_service_enabled = settings.value('default service enabled')
     self.service_name_check_box.setChecked(default_service_enabled)
     self.service_name_check_box_toggled(default_service_enabled)
     self.x11_bypass_check_box.setChecked(settings.value('x11 bypass wm'))
     self.default_color = settings.value('default color')
     self.default_file_edit.setText(settings.value('default image'))
     self.slide_limits = settings.value('slide limits')
     # Prevent the dialog displayed by the alternate_rows_check_box to display.
     self.alternate_rows_check_box.blockSignals(True)
     self.alternate_rows_check_box.setChecked(settings.value('alternate rows'))
     self.alternate_rows_check_box.blockSignals(False)
     if self.slide_limits == SlideLimits.End:
         self.end_slide_radio_button.setChecked(True)
     elif self.slide_limits == SlideLimits.Wrap:
         self.wrap_slide_radio_button.setChecked(True)
     else:
         self.next_item_radio_button.setChecked(True)
     settings.endGroup()
     self.data_directory_copy_check_box.hide()
     self.new_data_directory_has_files_label.hide()
     self.data_directory_cancel_button.hide()
     # Since data location can be changed, make sure the path is present.
     self.current_data_path = AppLocation.get_data_path()
     if not os.path.exists(self.current_data_path):
         log.error('Data path not found %s' % self.current_data_path)
         answer = QtGui.QMessageBox.critical(self,
             translate('OpenLP.AdvancedTab', 'Data Directory Error'),
             translate('OpenLP.AdvancedTab', 'OpenLP data directory was not found\n\n%s\n\n'
             'This data directory was previously changed from the OpenLP '
             'default location.  If the new location was on removable '
             'media, that media needs to be made available.\n\n'
             'Click "No" to stop loading OpenLP. allowing you to fix the the problem.\n\n'
             'Click "Yes" to reset the data directory to the default '
             'location.').replace('%s', self.current_data_path),
             QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No),
             QtGui.QMessageBox.No)
         if answer == QtGui.QMessageBox.No:
             log.info('User requested termination')
             self.main_window.clean_up()
             sys.exit()
         # Set data location to default.
         settings.remove('advanced/data path')
         self.current_data_path = AppLocation.get_data_path()
         log.warning('User requested data path set to default %s' % self.current_data_path)
     self.data_directory_label.setText(os.path.abspath(self.current_data_path))
     self.default_color_button.setStyleSheet('background-color: %s' % self.default_color)
     # Don't allow data directory move if running portable.
     if settings.value('advanced/is portable'):
         self.data_directory_group_box.hide()