Exemplo n.º 1
0
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)
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
 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