def test_convert_default_download_config(self): old_pickle_dict = {"saveas": "dunno", "max_upload_rate": 33, "unrelatedkey": "test"} self.write_pickle_file(old_pickle_dict, "dlconfig.pickle") PickleConverter(self.mock_session).convert_default_download_config() self.assertTrue(os.path.exists(get_default_dscfg_filename(self.session_base_dir)))
def convert_default_download_config(self): """ Convert the dlconfig.pickle file to a .state file. """ state_dir = self.session.get_state_dir() old_filename = os.path.join(state_dir, 'dlconfig.pickle') new_filename = get_default_dscfg_filename(state_dir) if not os.path.exists(old_filename): return with open(old_filename, "rb") as old_file: dlconfig = pickle.load(old_file) # Upgrade to new config ddsconfig = DefaultDownloadStartupConfig.getInstance() for key, value in dlconfig.iteritems(): if key in [ 'saveas', 'max_upload_rate', 'max_download_rate', 'super_seeder', 'mode', 'selected_files', 'correctedfilename' ]: ddsconfig.dlconfig.set('downloadconfig', key, value) # Save the new file, remove the old one ddsconfig.save(new_filename) os.remove(old_filename) return ddsconfig
def saveDefaultDownloadConfig(self, scfg): state_dir = self.utility.session.get_state_dir() # Save DownloadStartupConfig dlcfgfilename = get_default_dscfg_filename(state_dir) self.defaultDLConfig.save(dlcfgfilename) # Save SessionStartupConfig cfgfilename = Session.get_default_config_filename(state_dir) scfg.save(cfgfilename)
def saveDefaultDownloadConfig(self, scfg): state_dir = self.utility.session.get_state_dir() # Save DownloadStartupConfig dlcfgfilename = get_default_dscfg_filename(state_dir) self.defaultDLConfig.save(dlcfgfilename) # Save SessionStartupConfig cfgfilename = Session.get_default_config_filename(state_dir) scfg.save(cfgfilename)
def start_session(self): """ This function loads any previous configuration files from the TRIBLER_STATE_DIR environment variable and then starts a Tribler session. :return: Nothing. """ if self._running: return False _logger.info("Set tribler_state_dir to %s" % os.environ['TRIBLER_STATE_DIR']) # Load configuration file (if exists) cfgfilename = Session.get_default_config_filename( os.environ['TRIBLER_STATE_DIR']) try: self._sconfig = SessionStartupConfig.load(cfgfilename) _logger.info("Loaded previous configuration file from %s" % cfgfilename) except: self._sconfig = SessionStartupConfig() self._sconfig.set_state_dir(os.environ['TRIBLER_STATE_DIR']) _logger.info( "No previous configuration file found, creating one in %s" % os.environ['TRIBLER_STATE_DIR']) # Set torrent collecting directory: dlcfgfilename = get_default_dscfg_filename( self._sconfig.get_state_dir()) _logger.debug("main: Download config %s", dlcfgfilename) try: defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) except: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(os.environ['TRIBLER_DOWNLOAD_DIR']) self._sconfig.set_torrent_collecting_dir( os.path.join(os.environ['TRIBLER_DOWNLOAD_DIR'])) # Create download directory: if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: _logger.info("Creating download directory: %s" % defaultDLConfig.get_dest_dir()) os.makedirs(defaultDLConfig.get_dest_dir()) except: _logger.error("Couldn't create download directory! (%s)" % defaultDLConfig.get_dest_dir()) # TODO: This is temporary for testing: from jnius import autoclass python_activity = autoclass('org.renpy.android.PythonActivity') files_dir = python_activity.mActivity.getFilesDir().getAbsolutePath() install_dir = files_dir + u'/lib/python2.7/site-packages' _logger.info("Set tribler_install_dir to %s" % install_dir) self._sconfig.set_install_dir(install_dir) # TODO: ^End of temporary test. # Disable unwanted dependencies: self._sconfig.set_torrent_store(True) self._sconfig.set_torrent_checking(True) self._sconfig.set_multicast_local_peer_discovery(False) self._sconfig.set_mainline_dht(True) self._sconfig.set_dht_torrent_collecting(True) self._sconfig.set_torrent_collecting_max_torrents(5000) _logger.info("Starting Tribler session..") self._session = Session(self._sconfig) upgrader = self._session.prestart() while not upgrader.is_done: time.sleep(0.1) self._session.start() _logger.info("Tribler session started!") self._dispersy = self._session.get_dispersy_instance() self.define_communities()
def InitStage1(self, installdir, autoload_discovery=True, use_torrent_search=True, use_channel_search=True): """ Stage 1 start: pre-start the session to handle upgrade. """ # Make sure the installation dir is on the PATH os.environ['PATH'] += os.pathsep + os.path.abspath(installdir) self.gui_image_manager = GuiImageManager.getInstance(installdir) # Start Tribler Session defaultConfig = SessionStartupConfig() state_dir = defaultConfig.get_state_dir() # Switch to the state dir so relative paths can be used (IE, in LevelDB store paths) if not os.path.exists(state_dir): os.makedirs(state_dir) os.chdir(state_dir) cfgfilename = Session.get_default_config_filename(state_dir) self._logger.debug(u"Session config %s", cfgfilename) try: self.sconfig = SessionStartupConfig.load(cfgfilename) except: try: self.sconfig = convertSessionConfig(os.path.join(state_dir, 'sessconfig.pickle'), cfgfilename) convertMainConfig(state_dir, os.path.join(state_dir, 'abc.conf'), os.path.join(state_dir, STATEDIR_GUICONFIG)) except: self.sconfig = SessionStartupConfig() self.sconfig.set_state_dir(state_dir) self.sconfig.set_install_dir(self.installdir) # TODO(emilon): Do we still want to force limit this? With the new # torrent store it should be pretty fast even with more that that. # Arno, 2010-03-31: Hard upgrade to 50000 torrents collected self.sconfig.set_torrent_collecting_max_torrents(50000) dlcfgfilename = get_default_dscfg_filename(self.sconfig.get_state_dir()) self._logger.debug("main: Download config %s", dlcfgfilename) try: defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) except: try: defaultDLConfig = convertDefaultDownloadConfig( os.path.join(state_dir, 'dlconfig.pickle'), dlcfgfilename) except: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(get_default_dest_dir()) if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: os.makedirs(defaultDLConfig.get_dest_dir()) except: # Could not create directory, ask user to select a different location dlg = wx.DirDialog(None, "Could not find download directory, please select a new location to store your downloads", style=wx.DEFAULT_DIALOG_STYLE) dlg.SetPath(get_default_dest_dir()) if dlg.ShowModal() == wx.ID_OK: new_dest_dir = dlg.GetPath() defaultDLConfig.set_dest_dir(new_dest_dir) defaultDLConfig.save(dlcfgfilename) self.sconfig.save(cfgfilename) else: # Quit self.onError = lambda e: self._logger.error( "tribler: quitting due to non-existing destination directory") raise Exception() if not use_torrent_search: self.sconfig.set_enable_torrent_search(False) if not use_channel_search: self.sconfig.set_enable_channel_search(False) session = Session(self.sconfig, autoload_discovery=autoload_discovery) session.add_observer(self.show_upgrade_dialog, NTFY_UPGRADER, [NTFY_STARTED]) self.upgrader = session.prestart() while not self.upgrader.is_done: wx.SafeYield() sleep(0.1) return session
def InitStage1(self, installdir, autoload_discovery=True, use_torrent_search=True, use_channel_search=True): """ Stage 1 start: pre-start the session to handle upgrade. """ self.gui_image_manager = GuiImageManager.getInstance(installdir) # Start Tribler Session defaultConfig = SessionStartupConfig() state_dir = defaultConfig.get_state_dir() # Switch to the state dir so relative paths can be used (IE, in LevelDB store paths) if not os.path.exists(state_dir): os.makedirs(state_dir) os.chdir(state_dir) cfgfilename = Session.get_default_config_filename(state_dir) self._logger.debug(u"Session config %s", cfgfilename) self.sconfig = SessionStartupConfig.load(cfgfilename) self.sconfig.set_install_dir(self.installdir) if not self.sconfig.get_watch_folder_path(): default_watch_folder_dir = os.path.join(get_home_dir(), u'Downloads', u'TriblerWatchFolder') self.sconfig.set_watch_folder_path(default_watch_folder_dir) if not os.path.exists(default_watch_folder_dir): os.makedirs(default_watch_folder_dir) # TODO(emilon): Do we still want to force limit this? With the new # torrent store it should be pretty fast even with more that that. # Arno, 2010-03-31: Hard upgrade to 50000 torrents collected self.sconfig.set_torrent_collecting_max_torrents(50000) dlcfgfilename = get_default_dscfg_filename( self.sconfig.get_state_dir()) self._logger.debug("main: Download config %s", dlcfgfilename) if os.path.exists(dlcfgfilename): defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) else: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(get_default_dest_dir()) if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: os.makedirs(defaultDLConfig.get_dest_dir()) except: # Could not create directory, ask user to select a different location dlg = wx.DirDialog( None, "Could not find download directory, please select a new location to store your downloads", style=wx.DEFAULT_DIALOG_STYLE) dlg.SetPath(get_default_dest_dir()) if dlg.ShowModal() == wx.ID_OK: new_dest_dir = dlg.GetPath() defaultDLConfig.set_dest_dir(new_dest_dir) defaultDLConfig.save(dlcfgfilename) self.sconfig.save(cfgfilename) else: # Quit self.onError = lambda e: self._logger.error( "tribler: quitting due to non-existing destination directory" ) raise Exception() if not use_torrent_search: self.sconfig.set_enable_torrent_search(False) if not use_channel_search: self.sconfig.set_enable_channel_search(False) session = Session(self.sconfig, autoload_discovery=autoload_discovery) session.add_observer(self.show_upgrade_dialog, NTFY_UPGRADER, [NTFY_STARTED]) while not session.upgrader.is_done: wx.SafeYield() sleep(0.1) return session
def test_get_default_dest_dir(self): self.assertIsInstance(get_default_dest_dir(), unicode) self.assertIsInstance(get_default_dscfg_filename(""), str)
def start_session(self): """ This function loads any previous configuration files from the TRIBLER_STATE_DIR environment variable and then starts a Tribler session. :return: Nothing. """ if self._running: return False _logger.info("Set tribler_state_dir to %s" % os.environ["TRIBLER_STATE_DIR"]) # Load configuration file (if exists) cfgfilename = Session.get_default_config_filename(os.environ["TRIBLER_STATE_DIR"]) try: self._sconfig = SessionStartupConfig.load(cfgfilename) _logger.info("Loaded previous configuration file from %s" % cfgfilename) except: self._sconfig = SessionStartupConfig() self._sconfig.set_state_dir(os.environ["TRIBLER_STATE_DIR"]) _logger.info("No previous configuration file found, creating one in %s" % os.environ["TRIBLER_STATE_DIR"]) # Set torrent collecting directory: dlcfgfilename = get_default_dscfg_filename(self._sconfig.get_state_dir()) _logger.debug("main: Download config %s", dlcfgfilename) try: defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) except: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(os.environ["TRIBLER_DOWNLOAD_DIR"]) self._sconfig.set_torrent_collecting_dir(os.path.join(os.environ["TRIBLER_DOWNLOAD_DIR"])) # Create download directory: if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: _logger.info("Creating download directory: %s" % defaultDLConfig.get_dest_dir()) os.makedirs(defaultDLConfig.get_dest_dir()) except: _logger.error("Couldn't create download directory! (%s)" % defaultDLConfig.get_dest_dir()) # TODO: This is temporary for testing: from jnius import autoclass python_activity = autoclass("org.renpy.android.PythonActivity") files_dir = python_activity.mActivity.getFilesDir().getAbsolutePath() install_dir = files_dir + u"/lib/python2.7/site-packages" _logger.info("Set tribler_install_dir to %s" % install_dir) self._sconfig.set_install_dir(install_dir) # TODO: ^End of temporary test. # Disable unwanted dependencies: self._sconfig.set_torrent_store(True) self._sconfig.set_torrent_checking(True) self._sconfig.set_multicast_local_peer_discovery(False) self._sconfig.set_mainline_dht(True) self._sconfig.set_dht_torrent_collecting(True) self._sconfig.set_torrent_collecting_max_torrents(5000) _logger.info("Starting Tribler session..") self._session = Session(self._sconfig) upgrader = self._session.prestart() while not upgrader.is_done: time.sleep(0.1) self._session.start() _logger.info("Tribler session started!") self._dispersy = self._session.get_dispersy_instance() self.define_communities()