Skip to content

Commit 764e81f

Browse files
authored
Merge pull request #449 from superannotateai/1027_fix_logs_assign_items
log fixes
2 parents f48a5d1 + 8b0b438 commit 764e81f

File tree

5 files changed

+35
-32
lines changed

5 files changed

+35
-32
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -684,8 +684,10 @@ def assign_items(
684684
685685
:param project: project name or folder path (e.g., "project1/folder1")
686686
:type project: str
687+
687688
:param items: list of items to assign
688-
:type item_names: list of str
689+
:type items: list of str
690+
689691
:param user: user email
690692
:type user: str
691693
"""
@@ -694,9 +696,7 @@ def assign_items(
694696

695697
response = self.controller.assign_items(project_name, folder_name, items, user)
696698

697-
if not response.errors:
698-
logger.info(f"Assign items to user {user}")
699-
else:
699+
if response.errors:
700700
raise AppException(response.errors)
701701

702702
def unassign_items(
@@ -709,7 +709,7 @@ def unassign_items(
709709
:param project: project name or folder path (e.g., "project1/folder1")
710710
:type project: str
711711
:param items: list of items to unassign
712-
:type item_names: list of str
712+
:type items: list of str
713713
"""
714714
project_name, folder_name = extract_project_folder(project)
715715

src/superannotate/lib/core/service_types.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,13 @@ def __init__(self, response, content_type=None):
7979
"reason": response.reason,
8080
"content": response.content,
8181
}
82-
if response.ok:
83-
if content_type:
82+
try:
83+
if content_type and content_type is not self.__class__:
8484
data["data"] = content_type(**response.json())
8585
else:
8686
data["data"] = response.json()
87+
except Exception as e:
88+
data["data"] = {}
8789
super().__init__(**data)
8890

8991
@property
@@ -92,4 +94,8 @@ def ok(self):
9294

9395
@property
9496
def error(self):
95-
return getattr(self.data, "error", "Unknown error.")
97+
default_message = self.reason if self.reason else "Unknown Error"
98+
if isinstance(self.data, dict):
99+
return self.data.get("error", default_message)
100+
else:
101+
return getattr(self.data, "error", default_message)

src/superannotate/lib/core/serviceproviders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def assign_items(
182182
folder_name: str,
183183
user: str,
184184
item_names: list,
185-
):
185+
) -> ServiceResponse:
186186
raise NotImplementedError
187187

188188
def get_bulk_images(

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
from lib.core.usecases.base import BaseUseCase
2323
from superannotate.logger import get_default_logger
2424

25-
2625
logger = get_default_logger()
2726

2827

@@ -210,33 +209,31 @@ def __init__(
210209
self._user = user
211210
self._service = service
212211

213-
def validate_user(
212+
def validate_item_names(
214213
self,
215214
):
216-
217-
for c in self._project.users:
218-
if c["user_id"] == self._user:
219-
return True
220-
221-
raise AppValidationException(
222-
f"{self._user} is not a verified contributor for the {self._project.name}"
223-
)
215+
self._item_names = list(set(self._item_names))
224216

225217
def execute(self):
218+
cnt_assigned = 0
219+
total_count = len(self._item_names)
226220
if self.is_valid():
227221
for i in range(0, len(self._item_names), self.CHUNK_SIZE):
228-
is_assigned = self._service.assign_items(
222+
response = self._service.assign_items(
229223
team_id=self._project.team_id,
230224
project_id=self._project.id,
231225
folder_name=self._folder.name,
232226
user=self._user,
233227
item_names=self._item_names[i : i + self.CHUNK_SIZE], # noqa: E203
234228
)
235-
if not is_assigned:
236-
self._response.errors = AppException(
237-
f"Cant assign {', '.join(self._item_names[i: i + self.CHUNK_SIZE])}"
238-
)
239-
continue
229+
if not response.ok and response.error: # User not found
230+
self._response.errors += response.error
231+
return self._response
232+
233+
cnt_assigned += response.data["successCount"]
234+
logger.info(
235+
f"Assigned {cnt_assigned}/{total_count} items to user {self._user}"
236+
)
240237
return self._response
241238

242239

src/superannotate/lib/infrastructure/services.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,10 @@ def _request(
134134
if response.status_code == 404 and retried < 3:
135135
return self._request(
136136
url,
137-
method="get",
138-
data=None,
139-
headers=None,
140-
params=None,
137+
method=method,
138+
data=data,
139+
headers=headers,
140+
params=params,
141141
retried=retried + 1,
142142
content_type=content_type,
143143
)
@@ -765,9 +765,9 @@ def assign_items(
765765
folder_name: str,
766766
user: str,
767767
item_names: list,
768-
):
768+
) -> ServiceResponse:
769769
assign_items_url = urljoin(self.api_url, self.URL_ASSIGN_ITEMS)
770-
res = self._request(
770+
return self._request(
771771
assign_items_url,
772772
"put",
773773
params={"team_id": team_id, "project_id": project_id},
@@ -776,8 +776,8 @@ def assign_items(
776776
"assign_user_id": user,
777777
"folder_name": folder_name,
778778
},
779+
content_type=ServiceResponse,
779780
)
780-
return res.ok
781781

782782
def un_assign_items(
783783
self,

0 commit comments

Comments
 (0)