Skip to content

Commit 65ca454

Browse files
committed
fix direct s3 upload with folder
1 parent 1fe660c commit 65ca454

File tree

2 files changed

+43
-19
lines changed

2 files changed

+43
-19
lines changed

superannotate/db/projects.py

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -185,21 +185,7 @@ def get_project_image_count(project):
185185
:return: number of images in the project
186186
:rtype: int
187187
"""
188-
if not isinstance(project, dict):
189-
project = get_project_metadata_bare(project)
190-
team_id, project_id = project["team_id"], project["id"]
191-
params = {'team_id': team_id}
192-
response = _api.send_request(
193-
req_type='GET',
194-
path=f'/reporting/project/{project_id}/overview',
195-
params=params
196-
)
197-
if not response.ok:
198-
raise SABaseException(
199-
response.status_code,
200-
"Couldn't get project image count " + response.text
201-
)
202-
return response.json()["total_images"]
188+
return len(search_images(project))
203189

204190

205191
def upload_video_to_project(
@@ -472,6 +458,9 @@ def upload_images_from_folder_to_project(
472458
:rtype: tuple (3 members) of list of strs
473459
"""
474460
project, project_folder = get_project_and_folder_metadata(project)
461+
project_folder_name = project["name"] + (
462+
f'/{project_folder["name"]}' if project_folder else ""
463+
)
475464
if recursive_subfolders:
476465
logger.info(
477466
"When using recursive subfolder parsing same name images in different subfolders will overwrite each other."
@@ -488,7 +477,7 @@ def upload_images_from_folder_to_project(
488477

489478
logger.info(
490479
"Uploading all images with extensions %s from %s to project %s. Excluded file patterns are: %s.",
491-
extensions, folder_path, project["name"], exclude_file_patterns
480+
extensions, folder_path, project_folder_name, exclude_file_patterns
492481
)
493482
if from_s3_bucket is None:
494483
paths = []
@@ -785,6 +774,9 @@ def upload_images_to_project(
785774
:rtype: tuple (3 members) of list of strs
786775
"""
787776
project, project_folder = get_project_and_folder_metadata(project)
777+
project_folder_name = project["name"] + (
778+
f'/{project_folder["name"]}' if project_folder else ""
779+
)
788780
if not isinstance(img_paths, list):
789781
raise SABaseException(
790782
0, "img_paths argument to upload_images_to_project should be a list"
@@ -813,7 +805,7 @@ def upload_images_to_project(
813805
)
814806
len_img_paths = len(img_paths)
815807
logger.info(
816-
"Uploading %s images to project %s.", len_img_paths, project["name"]
808+
"Uploading %s images to project %s.", len_img_paths, project_folder_name
817809
)
818810
if len_img_paths == 0:
819811
return ([], [], duplicate_images)
@@ -1652,7 +1644,9 @@ def upload_images_from_s3_bucket_to_project(
16521644
logger.info("Waiting for S3 upload to finish.")
16531645
while True:
16541646
time.sleep(5)
1655-
res = _get_upload_from_s3_bucket_to_project_status(project)
1647+
res = _get_upload_from_s3_bucket_to_project_status(
1648+
project, project_folder
1649+
)
16561650
if res["progress"] == '2':
16571651
break
16581652
if res["progress"] != "1":
@@ -1664,11 +1658,13 @@ def upload_images_from_s3_bucket_to_project(
16641658
set_project_default_image_quality_in_editor(project, old_quality)
16651659

16661660

1667-
def _get_upload_from_s3_bucket_to_project_status(project):
1661+
def _get_upload_from_s3_bucket_to_project_status(project, project_folder):
16681662
team_id, project_id = project["team_id"], project["id"]
16691663
params = {
16701664
"team_id": team_id,
16711665
}
1666+
if project_folder is not None:
1667+
params["folder_id"] = project_folder["id"]
16721668
response = _api.send_request(
16731669
req_type='GET',
16741670
path=f'/project/{project_id}/getS3UploadStatus',

tests/test_folders.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
PROJECT_NAME1 = "test folder simple"
88
PROJECT_NAME2 = "test folder annotations"
99
PROJECT_NAME3 = "test folder deletes"
10+
PROJECT_NAME4 = "test folder image count"
1011

1112
FROM_FOLDER = Path("./tests/sample_project_vector")
1213

@@ -180,3 +181,30 @@ def test_rename_folder(tmpdir):
180181
assert "folder1" not in sa.search_folders(project)
181182

182183
print(sa.search_folders(project))
184+
185+
186+
def test_project_folder_image_count(tmpdir):
187+
tmpdir = Path(tmpdir)
188+
189+
projects_found = sa.search_projects(PROJECT_NAME4, return_metadata=True)
190+
for pr in projects_found:
191+
sa.delete_project(pr)
192+
193+
project = sa.create_project(PROJECT_NAME4, 'test', 'Vector')
194+
project = project["name"]
195+
sa.upload_images_from_folder_to_project(
196+
project, FROM_FOLDER, annotation_status="InProgress"
197+
)
198+
num_images = sa.get_project_image_count(project)
199+
assert num_images == 4
200+
201+
sa.create_folder(project, "folder1")
202+
203+
sa.upload_images_from_folder_to_project(
204+
project + "/folder1", FROM_FOLDER, annotation_status="InProgress"
205+
)
206+
num_images = sa.get_project_image_count(project)
207+
assert num_images == 4
208+
209+
num_images = sa.get_project_image_count(project + "/folder1")
210+
assert num_images == 4

0 commit comments

Comments
 (0)