Skip to content

Commit 7b1e10a

Browse files
Narek MkhitaryanNarek Mkhitaryan
authored andcommitted
fix get_item_by_id
1 parent e69bcc4 commit 7b1e10a

File tree

9 files changed

+35
-30
lines changed

9 files changed

+35
-30
lines changed

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ def get_folder_by_id(self, project_id: int, folder_id: int):
156156
response = self.controller.get_folder_by_id(
157157
folder_id=folder_id, project_id=project_id
158158
)
159-
160-
return FolderSerializer(response).serialize(
159+
response.raise_for_status()
160+
return FolderSerializer(response.data).serialize(
161161
exclude={"completedCount", "is_root"}
162162
)
163163

@@ -173,12 +173,13 @@ def get_item_by_id(self, project_id: int, item_id: int):
173173
:return: item metadata
174174
:rtype: dict
175175
"""
176-
176+
project_response = self.controller.get_project_by_id(project_id=project_id)
177+
project_response.raise_for_status()
177178
response = self.controller.get_item_by_id(
178-
item_id=item_id, project_id=project_id
179+
item_id=item_id, project=project_response.data
179180
)
180181

181-
return ItemSerializer(response).serialize(exclude={"url", "meta"})
182+
return ItemSerializer(response.data).serialize(exclude={"url", "meta"})
182183

183184
def get_team_metadata(self):
184185
"""Returns team metadata

src/superannotate/lib/core/usecases/folders.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@ def execute(self):
2929
project_id=self._project_id,
3030
team_id=self._team_id,
3131
)
32+
if not response.ok:
33+
self._response.errors = AppException(response.error)
3234
except AppException as e:
3335
self._response.errors = e
3436
else:
3537
self._response.data = response.data
36-
37-
if not response.ok:
38-
self._response.errors = AppException(response.error)
39-
4038
return self._response
4139

4240

src/superannotate/lib/core/usecases/items.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,18 @@ def __init__(self, item_id, project, service_provider):
4545
def execute(
4646
self,
4747
):
48-
4948
try:
5049
response = self._service_provider.items.get_by_id(
5150
item_id=self._item_id,
5251
project_id=self._project.id,
5352
project_type=self._project.type,
5453
)
54+
if not response.ok:
55+
self._response.errors = response.error
5556
except AppException as e:
5657
self._response.errors = e
5758
else:
5859
self._response.data = response.data
59-
60-
if not response.ok:
61-
self._response.errors = response.error
62-
6360
return self._response
6461

6562

src/superannotate/lib/core/usecases/projects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ def execute(self):
3232

3333
self._response.data = self._service_provider.projects.get_by_id(
3434
project_id=self._project_id
35-
)
35+
).data
3636

3737
except AppException as e:
3838
self._response.errors = e
3939
else:
40-
if not self._response.data.data:
40+
if not self._response.data:
4141
self._response.errors = AppException(
4242
"Either the specified project does not exist or you do not have permission to view it"
4343
)

src/superannotate/lib/infrastructure/controller.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,7 @@ def get_by_id(self, folder_id, project_id, team_id):
298298
team_id=team_id,
299299
service_provider=self.service_provider,
300300
)
301-
result = use_case.execute()
302-
return result
301+
return use_case.execute()
303302

304303
def list(self, project: ProjectEntity, condition: Condition = None):
305304
use_case = usecases.SearchFoldersUseCase(
@@ -868,31 +867,26 @@ def set_default(cls, obj):
868867
cls.DEFAULT = obj
869868
return cls.DEFAULT
870869

871-
def get_folder_by_id(self, folder_id: int, project_id: int) -> FolderEntity:
870+
def get_folder_by_id(self, folder_id: int, project_id: int):
872871
response = self.folders.get_by_id(
873872
folder_id=folder_id, project_id=project_id, team_id=self.team_id
874873
)
874+
return response
875875

876-
if response.errors:
877-
raise AppException(response.errors)
878-
879-
return response.data
880-
881-
def get_project_by_id(self, project_id: int) -> ProjectEntity:
876+
def get_project_by_id(self, project_id: int):
882877
response = self.projects.get_by_id(project_id=project_id)
883878
if response.errors:
884879
raise AppException(response.errors)
885880

886-
return response.data
881+
return response
887882

888-
def get_item_by_id(self, item_id: int, project_id: int):
889-
project = self.get_project_by_id(project_id=project_id)
883+
def get_item_by_id(self, item_id: int, project: ProjectEntity):
890884
response = self.items.get_by_id(item_id=item_id, project=project)
891885

892886
if response.errors:
893887
raise AppException(response.errors)
894888

895-
return response.data
889+
return response
896890

897891
def get_project_folder_by_path(
898892
self, path: Union[str, Path]

src/superannotate/lib/infrastructure/services/folder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class FolderService(BaseFolderService):
1515
URL_ASSIGN_FOLDER = "folder/editAssignment"
1616
URL_GET_BY_ID = "folder/getFolderById"
1717

18-
def get_by_id(self, folder_id, project_id, team_id):
18+
def get_by_id(self, folder_id, project_id, team_id) -> FolderResponse:
1919
params = {"team_id": team_id, "folder_id": folder_id, "project_id": project_id}
2020
response = self.client.request(
2121
self.URL_GET_BY_ID, "get", params=params, content_type=FolderResponse

src/superannotate/lib/infrastructure/services/item.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def get_by_id(self, item_id, project_id, project_type):
5050

5151
response = self.client.request(
5252
url=self.URL_GET_BY_ID.format(image_id=item_id),
53+
method="get",
5354
params=params,
5455
content_type=content_type,
5556
)

tests/integration/items/test_get_item_metadata.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ def test_get_item_metadata(self):
4949
item_metadata, self.EXPECTED_ITEM_METADATA, self.IGNORE_KEYS
5050
)
5151

52+
def test_get_item_by_id(self):
53+
project_metadata = sa.get_project_metadata(self.PROJECT_NAME)
54+
sa.upload_images_from_folder_to_project(
55+
self.PROJECT_NAME, self.folder_path, annotation_status="InProgress"
56+
)
57+
item_metadata = sa.get_item_metadata(self.PROJECT_NAME, self.IMAGE_NAME)
58+
item_by_id = sa.get_item_by_id(project_metadata["id"], item_metadata["id"])
59+
assert item_by_id["name"] == self.IMAGE_NAME
60+
5261

5362
class TestGetEntityMetadataPixel(BaseTestCase):
5463
PROJECT_NAME = "TestGetEntityMetadataPixel"

tests/integration/projects/test_get_project_metadata.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,8 @@ def test_metadata_payload(self):
4242
assert compare_result(
4343
projects[0], self.EXPECTED_PROJECT_METADATA, self.IGNORE_KEYS
4444
)
45+
46+
def test_get_project_by_id(self):
47+
project_metadata = sa.get_project_metadata(self.PROJECT_NAME)
48+
project_by_id = sa.get_project_by_id(project_metadata["id"])
49+
assert project_by_id["name"] == self.PROJECT_NAME

0 commit comments

Comments
 (0)