Exemplo n.º 1
0
    def test_change_unrar_tool(self):
        """
        Test change_unrar_tool
        """
        custom_check_mock = mock.patch('rarfile.custom_check', mock.MagicMock())
        custom_check_mock.new.side_effect = [RarExecError(), True]

        with custom_check_mock,\
              mock.patch('os.path.exists', mock.MagicMock(return_value=True)),\
              mock.patch('os.path.getsize', mock.MagicMock(return_value=447440)),\
              mock.patch('os.remove'):
            self.assertTrue(config.change_unrar_tool('unrar', 'bsdtar'))

        my_environ = mock.patch.dict(os.environ,
                                     {'ProgramFiles': 'C:\\Program Files (x86)\\'}, clear=True)
        with my_environ:
            self.assertFalse(config.change_unrar_tool('unrar', 'bsdtar'))

        sickbeard.PROG_DIR = 'C:\\SickRage'
        my_environ = mock.patch.dict(os.environ,
                                     {'ProgramFiles': 'C:\\Program Files (x86)\\',
                                      'ProgramFiles(x86)': 'C:\\Program Files (x86)\\',
                                      'ProgramW6432': 'C:\\Program Files\\'}, clear=True)
        custom_check_mock.new.side_effect = [RarExecError(), RarExecError(), True, True, True, True]
        isfile_mock = mock.patch('os.path.isfile', mock.MagicMock())
        isfile_mock.new.side_effect = [True, False, True]

        with custom_check_mock, isfile_mock, my_environ:
            self.assertTrue(config.change_unrar_tool('unrar', 'bsdtar'))
Exemplo n.º 2
0
    def test_change_unrar_tool(self):
        """
        Test change_unrar_tool
        """
        custom_check_mock = mock.patch('rarfile.custom_check', mock.MagicMock())
        custom_check_mock.new.side_effect = [RarExecError(), True]

        with custom_check_mock,\
              mock.patch('os.path.exists', mock.MagicMock(return_value=True)),\
              mock.patch('os.path.getsize', mock.MagicMock(return_value=447440)),\
              mock.patch('os.remove'):
            self.assertTrue(config.change_unrar_tool('unrar', 'bsdtar'))

        my_environ = mock.patch.dict(os.environ,
                                     {'ProgramFiles': 'C:\\Program Files (x86)\\'}, clear=True)
        with my_environ:
            self.assertFalse(config.change_unrar_tool('unrar', 'bsdtar'))

        sickbeard.PROG_DIR = 'C:\\SickRage'
        my_environ = mock.patch.dict(os.environ,
                                     {'ProgramFiles': 'C:\\Program Files (x86)\\',
                                      'ProgramFiles(x86)': 'C:\\Program Files (x86)\\',
                                      'ProgramW6432': 'C:\\Program Files\\'}, clear=True)
        custom_check_mock.new.side_effect = [RarExecError(), RarExecError(), True, True, True, True]
        isfile_mock = mock.patch('os.path.isfile', mock.MagicMock())
        isfile_mock.new.side_effect = [True, False, True]

        with custom_check_mock, isfile_mock, my_environ:
            self.assertTrue(config.change_unrar_tool('unrar', 'bsdtar'))
Exemplo n.º 3
0
 def isRarSupported():
     """
     Test Unpacking Support: - checks if unrar is installed and accesible
     """
     check = config.change_unrar_tool(sickbeard.UNRAR_TOOL,
                                      sickbeard.ALT_UNRAR_TOOL)
     if not check:
         logger.log('Looks like unrar is not installed, check failed',
                    logger.WARNING)
     return ('not supported', 'supported')[check]
Exemplo n.º 4
0
    def savePostProcessing(self,
                           kodi_data=None,
                           kodi_12plus_data=None,
                           mediabrowser_data=None,
                           sony_ps3_data=None,
                           wdtv_data=None,
                           tivo_data=None,
                           mede8er_data=None,
                           keep_processed_dir=None,
                           process_method=None,
                           processor_follow_symlinks=None,
                           del_rar_contents=None,
                           process_automatically=None,
                           no_delete=None,
                           rename_episodes=None,
                           airdate_episodes=None,
                           file_timestamp_timezone=None,
                           unpack=None,
                           unpack_dir=None,
                           unrar_tool=None,
                           alt_unrar_tool=None,
                           move_associated_files=None,
                           delete_non_associated_files=None,
                           sync_files=None,
                           postpone_if_sync_files=None,
                           allowed_extensions=None,
                           tv_download_dir=None,
                           create_missing_show_dirs=None,
                           add_shows_wo_dir=None,
                           extra_scripts=None,
                           nfo_rename=None,
                           naming_pattern=None,
                           naming_multi_ep=None,
                           naming_custom_abd=None,
                           naming_anime=None,
                           naming_abd_pattern=None,
                           naming_strip_year=None,
                           naming_custom_sports=None,
                           naming_sports_pattern=None,
                           naming_custom_anime=None,
                           naming_anime_pattern=None,
                           naming_anime_multi_ep=None,
                           autopostprocessor_frequency=None,
                           use_icacls=None):

        results = []

        if not config.change_tv_download_dir(tv_download_dir):
            results += [
                "Unable to create directory " +
                ek(os.path.normpath, tv_download_dir) + ", dir not changed."
            ]

        config.change_postprocessor_frequency(autopostprocessor_frequency)
        config.change_process_automatically(process_automatically)
        sickbeard.USE_ICACLS = config.checkbox_to_value(use_icacls)

        config.change_unrar_tool(unrar_tool, alt_unrar_tool)

        unpack = try_int(unpack)
        if unpack == sickbeard.UNPACK_PROCESS_CONTENTS:
            sickbeard.UNPACK = int(self.isRarSupported() != 'not supported')
            if sickbeard.UNPACK != sickbeard.UNPACK_PROCESS_CONTENTS:
                results.append(
                    _("Unpacking Not Supported, disabling unpack setting"))
        elif unpack in sickbeard.unpackStrings:
            sickbeard.UNPACK = unpack

        if not config.change_unpack_dir(unpack_dir):
            results += [
                "Unable to change unpack directory to " +
                ek(os.path.normpath, unpack_dir) + ", check the logs."
            ]

        sickbeard.NO_DELETE = config.checkbox_to_value(no_delete)
        sickbeard.KEEP_PROCESSED_DIR = config.checkbox_to_value(
            keep_processed_dir)
        sickbeard.CREATE_MISSING_SHOW_DIRS = config.checkbox_to_value(
            create_missing_show_dirs)
        sickbeard.ADD_SHOWS_WO_DIR = config.checkbox_to_value(add_shows_wo_dir)
        sickbeard.PROCESS_METHOD = process_method
        sickbeard.PROCESSOR_FOLLOW_SYMLINKS = config.checkbox_to_value(
            processor_follow_symlinks)
        sickbeard.DELRARCONTENTS = config.checkbox_to_value(del_rar_contents)
        sickbeard.EXTRA_SCRIPTS = [
            x.strip() for x in extra_scripts.split('|') if x.strip()
        ]
        sickbeard.RENAME_EPISODES = config.checkbox_to_value(rename_episodes)
        sickbeard.AIRDATE_EPISODES = config.checkbox_to_value(airdate_episodes)
        sickbeard.FILE_TIMESTAMP_TIMEZONE = file_timestamp_timezone
        sickbeard.MOVE_ASSOCIATED_FILES = config.checkbox_to_value(
            move_associated_files)
        sickbeard.DELETE_NON_ASSOCIATED_FILES = config.checkbox_to_value(
            delete_non_associated_files)
        sickbeard.SYNC_FILES = sync_files
        sickbeard.POSTPONE_IF_SYNC_FILES = config.checkbox_to_value(
            postpone_if_sync_files)

        sickbeard.ALLOWED_EXTENSIONS = ','.join(
            {x.strip()
             for x in allowed_extensions.split(',') if x.strip()})
        sickbeard.NAMING_CUSTOM_ABD = config.checkbox_to_value(
            naming_custom_abd)
        sickbeard.NAMING_CUSTOM_SPORTS = config.checkbox_to_value(
            naming_custom_sports)
        sickbeard.NAMING_CUSTOM_ANIME = config.checkbox_to_value(
            naming_custom_anime)
        sickbeard.NAMING_STRIP_YEAR = config.checkbox_to_value(
            naming_strip_year)
        sickbeard.NFO_RENAME = config.checkbox_to_value(nfo_rename)

        sickbeard.METADATA_KODI = kodi_data
        sickbeard.METADATA_KODI_12PLUS = kodi_12plus_data
        sickbeard.METADATA_MEDIABROWSER = mediabrowser_data
        sickbeard.METADATA_PS3 = sony_ps3_data
        sickbeard.METADATA_WDTV = wdtv_data
        sickbeard.METADATA_TIVO = tivo_data
        sickbeard.METADATA_MEDE8ER = mede8er_data

        sickbeard.metadata_provider_dict['KODI'].set_config(
            sickbeard.METADATA_KODI)
        sickbeard.metadata_provider_dict['KODI 12+'].set_config(
            sickbeard.METADATA_KODI_12PLUS)
        sickbeard.metadata_provider_dict['MediaBrowser'].set_config(
            sickbeard.METADATA_MEDIABROWSER)
        sickbeard.metadata_provider_dict['Sony PS3'].set_config(
            sickbeard.METADATA_PS3)
        sickbeard.metadata_provider_dict['WDTV'].set_config(
            sickbeard.METADATA_WDTV)
        sickbeard.metadata_provider_dict['TIVO'].set_config(
            sickbeard.METADATA_TIVO)
        sickbeard.metadata_provider_dict['Mede8er'].set_config(
            sickbeard.METADATA_MEDE8ER)

        if self.isNamingValid(naming_pattern,
                              naming_multi_ep,
                              anime_type=naming_anime) != "invalid":
            sickbeard.NAMING_PATTERN = naming_pattern
            sickbeard.NAMING_MULTI_EP = try_int(
                naming_multi_ep, NAMING_LIMITED_EXTEND_E_PREFIXED)
            sickbeard.NAMING_FORCE_FOLDERS = naming.check_force_season_folders(
            )
        else:
            results.append(
                _("You tried saving an invalid normal naming config, not saving your naming settings"
                  ))

        if self.isNamingValid(naming_anime_pattern,
                              naming_anime_multi_ep,
                              anime_type=naming_anime) != "invalid":
            sickbeard.NAMING_ANIME_PATTERN = naming_anime_pattern
            sickbeard.NAMING_ANIME_MULTI_EP = try_int(
                naming_anime_multi_ep, NAMING_LIMITED_EXTEND_E_PREFIXED)
            sickbeard.NAMING_ANIME = try_int(naming_anime, 3)
            sickbeard.NAMING_FORCE_FOLDERS = naming.check_force_season_folders(
            )
        else:
            results.append(
                _("You tried saving an invalid anime naming config, not saving your naming settings"
                  ))

        if self.isNamingValid(naming_abd_pattern, None, abd=True) != "invalid":
            sickbeard.NAMING_ABD_PATTERN = naming_abd_pattern
        else:
            results.append(
                "You tried saving an invalid air-by-date naming config, not saving your air-by-date settings"
            )

        if self.isNamingValid(naming_sports_pattern, None,
                              sports=True) != "invalid":
            sickbeard.NAMING_SPORTS_PATTERN = naming_sports_pattern
        else:
            results.append(
                "You tried saving an invalid sports naming config, not saving your sports settings"
            )

        sickbeard.save_config()

        if results:
            for x in results:
                logger.log(x, logger.WARNING)
            ui.notifications.error(_('Error(s) Saving Configuration'),
                                   '<br>\n'.join(results))
        else:
            ui.notifications.message(_('Configuration Saved'),
                                     ek(os.path.join, sickbeard.CONFIG_FILE))

        return self.redirect("/config/postProcessing/")