def clean_dir(_dir, retry=1, max_retries=5): # type: (unicode, int, int) -> None if not os.path.exists(_dir): return log.debug('%d/%d Removing directory %r', retry, max_retries, _dir) to_remove = safe_long_path(_dir) test_data = os.environ.get('TEST_SAVE_DATA') if test_data: shutil.move(to_remove, test_data) return try: for dirpath, folders, filenames in os.walk(to_remove): for folder in folders: BaseClient.unset_path_readonly(os.path.join(dirpath, folder)) for filename in filenames: BaseClient.unset_path_readonly(os.path.join(dirpath, filename)) shutil.rmtree(to_remove) except: if retry < max_retries: time.sleep(2) clean_dir(_dir, retry=retry + 1)
def _download_content(self, engine, remote_client, info, file_path, url=None): file_dir = os.path.dirname(file_path) file_name = os.path.basename(file_path) file_out = os.path.join( file_dir, DOWNLOAD_TMP_FILE_PREFIX + file_name + DOWNLOAD_TMP_FILE_SUFFIX) # Close to processor method - should try to refactor ? pair = engine.get_dao().get_valid_duplicate_file(info.digest) if pair: local_client = engine.get_local_client() existing_file_path = local_client._abspath(pair.local_path) log.debug( 'Local file matches remote digest %r, copying it from %r', info.digest, existing_file_path) shutil.copy(existing_file_path, file_out) if pair.is_readonly(): log.debug('Unsetting readonly flag on copied file %r', file_out) from nxdrive.client.common import BaseClient BaseClient.unset_path_readonly(file_out) else: log.debug('Downloading file %r', info.filename) if url is not None: remote_client.do_get(url, file_out=file_out, digest=info.digest, digest_algorithm=info.digest_algorithm) else: remote_client.get_blob(info, file_out=file_out) return file_out
def _check_root(self): root = self._dao.get_state_from_local("/") if root is None: from nxdrive.client.common import BaseClient if os.path.exists(self._local_folder): BaseClient.unset_path_readonly(self._local_folder) self._make_local_folder(self._local_folder) self._add_top_level_state() self._set_root_icon() BaseClient.set_path_readonly(self._local_folder)
def _check_root(self): root = self._dao.get_state_from_local("/") if root is None: if os.path.exists(self.local_folder): BaseClient.unset_path_readonly(self.local_folder) self._make_local_folder(self.local_folder) self._add_top_level_state() self._set_root_icon() self.add_to_favorites() BaseClient.set_path_readonly(self.local_folder)
def clean_dir(_dir): if os.path.exists(_dir): to_remove = safe_long_path(_dir) try: for dirpath, dirnames, filenames in os.walk(to_remove): for dirname in dirnames: BaseClient.unset_path_readonly(os.path.join(dirpath, dirname)) for filename in filenames: BaseClient.unset_path_readonly(os.path.join(dirpath, filename)) shutil.rmtree(to_remove) except Exception as e: if type(e) == WindowsError: os.system('rmdir /S /Q %s' % to_remove)
def clean_dir(_dir): if os.path.exists(_dir): to_remove = safe_long_path(_dir) if "TEST_SAVE_DATA" in os.environ: shutil.move(to_remove, os.environ["TEST_SAVE_DATA"]) return try: for dirpath, dirnames, filenames in os.walk(to_remove): for dirname in dirnames: BaseClient.unset_path_readonly(os.path.join(dirpath, dirname)) for filename in filenames: BaseClient.unset_path_readonly(os.path.join(dirpath, filename)) shutil.rmtree(to_remove) except Exception as e: if type(e) == WindowsError: os.system('rmdir /S /Q %s' % to_remove)
def _download_content(self, engine, remote_client, info, file_path, url=None): file_dir = os.path.dirname(file_path) file_name = os.path.basename(file_path) file_out = os.path.join(file_dir, DOWNLOAD_TMP_FILE_PREFIX + file_name + DOWNLOAD_TMP_FILE_SUFFIX) # Close to processor method - should try to refactor ? pair = engine.get_dao().get_valid_duplicate_file(info.digest) if pair: local_client = engine.get_local_client() existing_file_path = local_client._abspath(pair.local_path) log.debug('Local file matches remote digest %r, copying it from %r', info.digest, existing_file_path) shutil.copy(existing_file_path, file_out) if pair.is_readonly(): log.debug('Unsetting readonly flag on copied file %r', file_out) from nxdrive.client.common import BaseClient BaseClient.unset_path_readonly(file_out) else: log.debug('Downloading file %r', info.filename) if url is not None: remote_client.do_get(url, file_out=file_out, digest=info.digest, digest_algorithm=info.digest_algorithm) else: remote_client.get_blob(info, file_out=file_out) return file_out