Skip to content

Commit 7724005

Browse files
Vaghinak BasentsyanVaghinak Basentsyan
authored andcommitted
Merge branch 're-design-sdk' of https://github.com/superannotateai/superannotate-python-sdk into re-design-sdk
2 parents bca81a2 + 0c02124 commit 7724005

File tree

4 files changed

+62
-6
lines changed

4 files changed

+62
-6
lines changed

src/superannotate/lib/app/interface/sdk_interface.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -608,9 +608,11 @@ def upload_images_from_public_urls_to_project(
608608
raise AppException("Not all image URLs have corresponding names.")
609609

610610
project_name, folder_name = extract_project_folder(project)
611-
existing_images = controller.search_images(
612-
project_name=project_name, folder_path=folder_name
613-
).data
611+
existing_images = controller.get_duplicated_images(
612+
project_name=project_name,
613+
folder_name=folder_name,
614+
images=img_names,
615+
)
614616

615617
image_name_url_map = {}
616618
duplicate_images = []
@@ -1221,6 +1223,9 @@ def assign_folder(project_name: str, folder_name: str, users: List[str]):
12211223
f"Skipping {user} from assignees. {user} is not a verified contributor for the {project_name}"
12221224
)
12231225

1226+
if not verified_users:
1227+
return
1228+
12241229
response = controller.assign_folder(
12251230
project_name=project_name, folder_name=folder_name, users=list(verified_users)
12261231
)
@@ -1721,7 +1726,7 @@ def upload_images_from_s3_bucket_to_project(
17211726
:type image_quality_in_editor: str
17221727
"""
17231728
project_name, folder_name = extract_project_folder(project)
1724-
controller.backend_upload_from_s3(
1729+
response = controller.backend_upload_from_s3(
17251730
project_name=project_name,
17261731
folder_name=folder_name,
17271732
folder_path=folder_path,
@@ -1730,6 +1735,8 @@ def upload_images_from_s3_bucket_to_project(
17301735
bucket_name=bucket_name,
17311736
image_quality=image_quality_in_editor,
17321737
)
1738+
if response.errors:
1739+
raise AppException(response.errors)
17331740

17341741

17351742
@Trackable

src/superannotate/lib/core/usecases.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2434,7 +2434,7 @@ def execute(self):
24342434
else:
24352435
raise AppException("Cant find settings.")
24362436

2437-
in_progress = self._backend_service.upload_form_s3(
2437+
response = self._backend_service.upload_form_s3(
24382438
project_id=self._project.uuid,
24392439
team_id=self._project.team_id,
24402440
access_key=self._access_key,
@@ -2443,6 +2443,11 @@ def execute(self):
24432443
from_folder_name=self._folder_path,
24442444
to_folder_id=self._folder.uuid,
24452445
)
2446+
2447+
if not response.ok:
2448+
self._response.errors = AppException(response.json()['error'])
2449+
2450+
in_progress = response.ok
24462451
if in_progress:
24472452
while True:
24482453
time.sleep(4)
@@ -4536,3 +4541,34 @@ def execute(self) -> Response:
45364541
else:
45374542
self._response.errors = AppException("Invalid image names.")
45384543
return self._response
4544+
4545+
4546+
4547+
class GetDuplicateImages(BaseUseCase):
4548+
def __init__(self,
4549+
service: SuerannotateServiceProvider,
4550+
project_id :int,
4551+
team_id: int,
4552+
folder_id: int,
4553+
images: List[str]
4554+
):
4555+
super().__init__()
4556+
self._service = service
4557+
self._project_id = project_id
4558+
self._team_id = team_id
4559+
self._folder_id = folder_id
4560+
self._images = images
4561+
self._chunk_size = 500
4562+
4563+
def execute(self):
4564+
duplicates = []
4565+
for i in range(0, len(self._images), self._chunk_size):
4566+
duplications = self._service.get_bulk_images(
4567+
project_id=self._project_id,
4568+
team_id=self._team_id,
4569+
folder_id=self._folder_id,
4570+
images=self._images[i: i + self._chunk_size],
4571+
)
4572+
duplicates += [image["name"] for image in duplications]
4573+
return duplicates
4574+

src/superannotate/lib/infrastructure/controller.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,3 +1464,16 @@ def delete_annotations(
14641464
image_names=image_names,
14651465
)
14661466
return use_case.execute()
1467+
1468+
1469+
def get_duplicated_images(self,project_name: str ,folder_name :str ,images: List[str]):
1470+
project = self._get_project(project_name)
1471+
folder = self._get_folder(project, folder_name)
1472+
use_case = usecases.GetDuplicateImages(
1473+
service=self._backend_client,
1474+
project_id=project.uuid,
1475+
team_id= project.team_id,
1476+
folder_id= folder.uuid,
1477+
images=images
1478+
)
1479+
return use_case.execute()

src/superannotate/lib/infrastructure/services.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ def upload_form_s3(
758758
"folder_id": to_folder_id,
759759
},
760760
)
761-
return response.ok
761+
return response
762762

763763
def get_upload_status(self, project_id: int, team_id: int, folder_id: int):
764764
get_upload_status_url = urljoin(

0 commit comments

Comments
 (0)