Skip to content

Commit bcd94f6

Browse files
committed
Fix copy images from or to root folder
1 parent 31b5573 commit bcd94f6

File tree

4 files changed

+56
-9
lines changed

4 files changed

+56
-9
lines changed

superannotate/db/images.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
_api = API.get_instance()
3232

3333

34-
def _get_project_root_folder_id(project):
34+
def get_project_root_folder_id(project):
3535
"""Get root folder ID
3636
Returns
3737
-------
@@ -82,7 +82,7 @@ def search_images(
8282
if project_folder is not None:
8383
project_folder_id = project_folder["id"]
8484
else:
85-
project_folder_id = _get_project_root_folder_id(project)
85+
project_folder_id = get_project_root_folder_id(project)
8686

8787
result_list = []
8888
params = {
@@ -164,7 +164,7 @@ def search_images_all_folders(
164164
annotation_status
165165
)
166166

167-
project_folder_id = _get_project_root_folder_id(project)
167+
project_folder_id = get_project_root_folder_id(project)
168168

169169
result_list = []
170170
params = {

superannotate/db/project_images.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from ..exceptions import SABaseException, SAImageSizeTooLarge
1212
from .images import (
1313
delete_image, get_image_annotations, get_image_bytes, get_image_metadata,
14-
search_images, set_image_annotation_status, upload_image_annotations
14+
get_project_root_folder_id, search_images, set_image_annotation_status,
15+
upload_image_annotations
1516
)
1617
from .project_api import get_project_and_folder_metadata
1718
from .projects import (
@@ -149,10 +150,16 @@ def _copy_images(
149150
"team_id": source_project["team_id"],
150151
"project_id": source_project["id"]
151152
}
152-
json_req = {
153-
"destination_folder_id": destination_project_folder["id"],
154-
"source_folder_name": source_project_folder["name"]
155-
}
153+
if source_project_folder is not None:
154+
source_folder_name = source_project_folder["name"]
155+
else:
156+
source_folder_name = 'root'
157+
json_req = {"source_folder_name": source_folder_name}
158+
if destination_project_folder is not None:
159+
destination_folder_id = destination_project_folder["id"]
160+
else:
161+
destination_folder_id = get_project_root_folder_id(destination_project)
162+
json_req["destination_folder_id"] = destination_folder_id
156163
res = {}
157164
res['skipped'] = 0
158165
for start_index in range(0, len(image_names), NUM_TO_SEND):

superannotate/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "4.1.0b14"
1+
__version__ = "4.1.0b15"

tests/test_folders.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,36 @@ def test_delete_images(tmpdir):
244244
assert num_images == 0
245245

246246

247+
def test_copy_images3(tmpdir):
248+
PROJECT_NAME = "test copy3 folder images"
249+
tmpdir = Path(tmpdir)
250+
251+
projects_found = sa.search_projects(PROJECT_NAME, return_metadata=True)
252+
for pr in projects_found:
253+
sa.delete_project(pr)
254+
255+
project = sa.create_project(PROJECT_NAME, 'test', 'Vector')
256+
sa.upload_images_from_folder_to_project(
257+
project, FROM_FOLDER, annotation_status="InProgress"
258+
)
259+
sa.create_folder(project, "folder1")
260+
project = PROJECT_NAME + "/folder1"
261+
262+
sa.copy_images(
263+
PROJECT_NAME, ["example_image_2.jpg", "example_image_3.jpg"],
264+
project,
265+
include_annotations=False,
266+
copy_annotation_status=False,
267+
copy_pin=False
268+
)
269+
270+
num_images = sa.get_project_image_count(project)
271+
assert num_images == 2
272+
273+
num_images = sa.get_project_image_count(PROJECT_NAME)
274+
assert num_images == 4
275+
276+
247277
def test_copy_images(tmpdir):
248278
PROJECT_NAME = "test copy folder images"
249279
tmpdir = Path(tmpdir)
@@ -294,6 +324,16 @@ def test_copy_images(tmpdir):
294324

295325
assert res == 2
296326

327+
sa.copy_images(
328+
project, ["example_image_2.jpg", "example_image_3.jpg"],
329+
PROJECT_NAME,
330+
include_annotations=False,
331+
copy_annotation_status=False,
332+
copy_pin=False
333+
)
334+
num_images = sa.get_project_image_count(PROJECT_NAME)
335+
assert num_images == 2
336+
297337

298338
def test_move_images(tmpdir):
299339
PROJECT_NAME = "test move folder images1"

0 commit comments

Comments
 (0)