Пример #1
0
    def mv(self, source_path, target_path):
        source_path = source_path
        target_path = self._dir_path(target_path)

        try:
            GCSObject(source_path).mv(GCSObject(target_path))
        except GCSObjectException:
            GCSObject(self._dir_path(source_path)).mv(GCSObject(target_path))
Пример #2
0
    def publish_initial(self, active_project, published_project):
        bucket_name = published_project.project_file_root()
        create_bucket(bucket_name)

        try:
            active_project_path = self._dir_path(active_project.file_root())
            published_project_path = self._dir_path(published_project.file_root())
            GCSObject(active_project_path).cp_dir_content(GCSObject(published_project_path), None)
        except BaseException:
            delete_bucket(bucket_name)
            raise
Пример #3
0
    def test_rm_removes_file_when_object_is_file(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir/file.jpg'))
        gcs_object.client.create_bucket('test')
        gcs_object.upload_from_string('content')

        # WHEN
        gcs_object.rm()

        # THEN
        dir_ = self._monkeypatch_gcsobject(self._monkeypatch_gcsobject(GCSObject('test/dir/')))
        self.assertEqual(dir_.size(), 0)
Пример #4
0
    def rename(self, source_path, target_path):
        gcs_obj = GCSObject(source_path)
        if not gcs_obj.exists():
            gcs_obj = GCSObject(self._dir_path(source_path))
            target_path = self._dir_path(target_path)

        gcs_obj.rename(GCSObject(target_path))
Пример #5
0
    def cp_file(self, source_path, target_path):
        gcs_obj = GCSObject(source_path)
        if not gcs_obj.exists():
            gcs_obj = GCSObject(self._dir_path(source_path))
            target_path = self._dir_path(target_path)

        gcs_obj.cp(GCSObject(target_path))
Пример #6
0
    def test_size_when_object_is_directory(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir1/'))
        gcs_object_1 = self._monkeypatch_gcsobject(GCSObject('test/dir1/notes1.txt'))
        gcs_object_2 = self._monkeypatch_gcsobject(GCSObject('test/dir1/notes2.txt'))

        # create a bucket
        gcs_object.client.create_bucket('test')

        # put files into a bucket
        gcs_object_1.upload_from_string('content')
        gcs_object_2.upload_from_string('content')

        # WHEN + THEN
        self.assertEqual(gcs_object.size(), len('content') * 2)
Пример #7
0
    def test_rename_file(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/file.jpg'))
        gcs_object.client.create_bucket('test')
        gcs_object.upload_from_string('content')

        gcs_object_renamed = self._monkeypatch_gcsobject(GCSObject('test/renamed.jpg'))

        # WHEN
        gcs_object.rename(gcs_object_renamed)

        # THEN
        self.assertFalse(gcs_object.exists())
        self.assertTrue(gcs_object_renamed.exists())
        self.assertEqual(gcs_object_renamed.size(), len('content'))
Пример #8
0
    def _list_dir(self, path):
        path = self._dir_path(path)

        iterator = GCSObject(path).ls(delimiter='/')
        _, object_name = self._local_filesystem_path_to_gcs_path(path)
        object_name = self._dir_path(object_name)

        blobs = list(iterator)
        prefixes = iterator.prefixes

        files = []
        dirs = []

        for blob in blobs:
            name = blob.name.replace(object_name, '', 1)
            if name != '':
                size = readable_size(blob.size)
                modified = blob.updated.strftime("%Y-%m-%d")
                files.append(FileInfo(name, size, modified))

        for prefix in prefixes:
            dirs.append(DirectoryInfo(prefix.replace(object_name, '', 1)[:-1]))

        files.sort()
        dirs.sort()

        return files, dirs
Пример #9
0
    def test_repr(self):
        gcs_object = self._monkeypatch_gcsobject(GCSObject(self.path))

        self.assertEqual(
            repr(gcs_object),
            'GCSObject(Bucket=physionet, Object="users/admin/profile.jpg")',
        )
Пример #10
0
    def mkdir(self, path):
        path = self._dir_path(path)

        try:
            GCSObject(path).mkdir()
        except GCSObjectException:
            raise FileExistsError
Пример #11
0
    def test_mkdir_doesnt_work_when_object_name_is_taken(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir1/dir2/'))
        gcs_object.client.create_bucket('test')
        gcs_object.mkdir()

        # WHEN + THEN
        self.assertRaises(GCSObjectException, gcs_object.mkdir)
Пример #12
0
    def test_cp_copies_file_to_directory(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir/file.jpg'))
        gcs_object_1 = self._monkeypatch_gcsobject(GCSObject('test/dir/'))

        # create a bucket
        gcs_object.client.create_bucket('test')

        # put a file into a bucket
        gcs_object.upload_from_string('content')

        # WHEN
        gcs_object_1.cp(self._monkeypatch_gcsobject(GCSObject('test/dir_copied/')))

        # THEN
        self.assertEqual(gcs_object_1.size(), len('content'))
        self.assertEqual(gcs_object.size(), len('content'))
Пример #13
0
    def test_size_when_object_is_file(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir1/notes.txt'))
        gcs_object.client.create_bucket('test')
        gcs_object.upload_from_string('content')

        # WHEN + THEN
        self.assertEqual(gcs_object.size(), len('content'))
Пример #14
0
    def test_mv_moves_file_when_object_is_file(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir/file.jpg'))
        gcs_object_1 = self._monkeypatch_gcsobject(GCSObject('test/dir/'))
        gcs_object_2 = self._monkeypatch_gcsobject(GCSObject('test/dir_copied/'))

        # create a bucket
        gcs_object.client.create_bucket('test')

        # put a file into a bucket
        gcs_object.upload_from_string('content')

        # WHEN
        gcs_object_1.mv(self._monkeypatch_gcsobject(GCSObject('test/dir_copied/')))

        # THEN
        self.assertEqual(gcs_object_2.size(), len('content'))
        self.assertEqual(gcs_object.exists(), False)
Пример #15
0
    def test_mkdir_makes_directories(self):
        # GIVEN
        gcs_object = self._monkeypatch_gcsobject(GCSObject('test/dir1/dir2/'))
        gcs_object.client.create_bucket('test')

        # WHEN
        gcs_object.mkdir()

        # THEN
        self.assertTrue(gcs_object.bucket.get_blob('dir1/dir2/'))
Пример #16
0
    def rmtree(self, path):
        path = self._dir_path(path)

        GCSObject(path).rm()
Пример #17
0
    def cp_dir(self, source_path, target_path, ignored_files=None):
        source_path = self._dir_path(source_path)
        target_path = self._dir_path(target_path)

        GCSObject(source_path).cp_dir_content(GCSObject(target_path), ignored_files=ignored_files)
Пример #18
0
 def open(self, path, mode='rb'):
     return GCSObject(path).open(mode)
Пример #19
0
    def test_init_when_storage_type_is_gcp(self):
        gcs_object = self._monkeypatch_gcsobject(GCSObject(self.path))

        self.assertEqual(gcs_object.bucket.name, 'physionet')
        self.assertEqual(gcs_object._object_name, 'users/admin/profile.jpg')
Пример #20
0
    def test_bucket_property_return_bucket_proper_object(self):
        gcs_object = self._monkeypatch_gcsobject(GCSObject(self.path))

        self.assertIsInstance(gcs_object.bucket, Bucket)
        self.assertEqual(gcs_object.bucket.name, 'physionet')
Пример #21
0
    def fput(self, path, file):
        gcs_object = GCSObject(os.path.join(path, file.name))
        if gcs_object.exists():
            raise FileExistsError

        gcs_object.upload_from_file(file)
Пример #22
0
    def fwrite(self, path, content):
        gcs_object = GCSObject(path)
        if gcs_object.exists():
            raise FileExistsError

        gcs_object.upload_from_string(content)
Пример #23
0
 def rm_dir(self, path, remove_zip=None):
     path = self._dir_path(path)
     GCSObject(path).rm()
Пример #24
0
 def rm(self, path):
     try:
         GCSObject(path).rm()
     except NotFound:
         GCSObject(self._dir_path(path)).rm()
Пример #25
0
    def test_blob_property_return_proper_object(self):
        gcs_object = self._monkeypatch_gcsobject(GCSObject(self.path))

        self.assertIsInstance(gcs_object.blob, Blob)
        self.assertEqual(gcs_object.blob.name, 'users/admin/profile.jpg')
Пример #26
0
 def _url(self, path):
     return GCSObject(path).url
Пример #27
0
 def remove_photo(self, path):
     target_path = os.path.join(settings.GCP_STORAGE_BUCKET_NAME, path)
     GCSObject(target_path).rm()
Пример #28
0
 def rename(self, source_path, user):
     target_path = os.path.join(settings.GCP_STORAGE_BUCKET_NAME, user.file_root(relative=True))
     GCSObject(source_path).rename(GCSObject(target_path))
Пример #29
0
 def _storage_used(self, project):
     return GCSObject(self._dir_path(project.file_root())).size()