Skip to content

Commit 2fbd298

Browse files
Vaghinak BasentsyanVaghinak Basentsyan
authored andcommitted
Fix get_fodlers
1 parent 6697ed1 commit 2fbd298

File tree

12 files changed

+75
-34
lines changed

12 files changed

+75
-34
lines changed

src/superannotate/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,6 @@
243243
"upload_videos_from_folder_to_project",
244244
# Annotation Section
245245
"create_annotation_class",
246-
"delete_annotation_class",
247246
"prepare_export",
248247
"download_export",
249248
"set_images_annotation_statuses",

src/superannotate/lib/app/helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def check_types(obj, **kwargs):
131131
if attr_name == "return":
132132
continue
133133
try:
134-
if attr_type.__origin__ is list:
134+
if getattr(attr_type, "__origin__") and attr_type.__origin__ is list:
135135
if attr_type.__args__:
136136
for elem in kwargs[attr_name]:
137137
if type(elem) in attr_type.__args__:
@@ -140,7 +140,7 @@ def check_types(obj, **kwargs):
140140
errors.append(f"Invalid input {attr_name}")
141141
elif not isinstance(kwargs[attr_name], list):
142142
errors.append(f"Argument {attr_name} is not of type {attr_type}")
143-
elif attr_type.__origin__ is Union:
143+
elif getattr(attr_type, "__origin__") and attr_type.__origin__ is Union:
144144
if kwargs.get(attr_name) and not isinstance(
145145
kwargs[attr_name], attr_type.__args__
146146
):

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,9 +1166,11 @@ def unassign_images(project: Union[str, dict], image_names: List[str]):
11661166
"""
11671167
project_name, folder_name = extract_project_folder(project)
11681168

1169-
controller.un_assign_images(
1169+
response = controller.un_assign_images(
11701170
project_name=project_name, folder_name=folder_name, image_names=image_names
11711171
)
1172+
if response.errors:
1173+
raise AppException(response.errors)
11721174

11731175

11741176
@Trackable
@@ -1183,7 +1185,11 @@ def unassign_folder(project_name: str, folder_name: str):
11831185
:param folder_name: folder name to remove assignees
11841186
:type folder_name: str
11851187
"""
1186-
controller.un_assign_folder(project_name=project_name, folder_name=folder_name)
1188+
response = controller.un_assign_folder(
1189+
project_name=project_name, folder_name=folder_name
1190+
)
1191+
if response.errors:
1192+
raise AppException(response.errors)
11871193

11881194

11891195
@Trackable
@@ -3536,4 +3542,4 @@ def aggregate_annotations_as_df(
35363542
include_tags,
35373543
verbose,
35383544
folder_names,
3539-
)
3545+
)

src/superannotate/lib/app/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ def serialize(self):
2727
data = super().serialize()
2828
users = []
2929
for user in data["users"]:
30-
user["user_role"] = constance.UserRole.get_name(data["user_role"])
30+
user["user_role"] = constance.UserRole.get_name(user["user_role"])
3131
users.append(user)
3232
data["users"] = users
3333
for user in data["pending_invitations"]:
34-
user["user_role"] = constance.UserRole.get_name(data["user_role"])
34+
user["user_role"] = constance.UserRole.get_name(user["user_role"])
3535
return data
3636

3737

src/superannotate/lib/core/entities.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ def __init__(
4747
name: str = None,
4848
project_type: int = None,
4949
description: str = None,
50+
attachment_name: str = None,
51+
attachment_path: str = None,
52+
creator_id: str = None,
53+
entropy_status: int = None,
54+
sharing_status: int = None,
5055
status: int = None,
5156
folder_id: int = None,
5257
upload_state: int = None,
@@ -62,6 +67,11 @@ def __init__(
6267
self.name = name
6368
self.project_type = project_type
6469
self.description = description
70+
self.attachment_name = attachment_name
71+
self.attachment_path = attachment_path
72+
self.creator_id = creator_id
73+
self.entropy_status = entropy_status
74+
self.sharing_status = sharing_status
6575
self.status = status
6676
self.folder_id = folder_id
6777
self.upload_state = upload_state
@@ -92,6 +102,11 @@ def to_dict(self):
92102
"type": self.project_type,
93103
"description": self.description,
94104
"status": self.status,
105+
"attachment_path": self.attachment_path,
106+
"attachment_name": self.attachment_name,
107+
"entropy_status": self.entropy_status,
108+
"sharing_status": self.sharing_status,
109+
"creator_id": self.creator_id,
95110
"folder_id": self.folder_id,
96111
"upload_state": self.upload_state,
97112
"users": self.users,

src/superannotate/lib/core/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class ProjectType(BaseTitledEnum):
3131

3232

3333
class UserRole(BaseTitledEnum):
34+
SUPER_AMIN = "Superadmin", 1
3435
ADMIN = "Admin", 2
3536
ANNOTATOR = "Annotator", 3
3637
QA = "QA", 4

src/superannotate/lib/core/serviceproviders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,4 @@ def run_segmentation(
287287
def run_prediction(
288288
self, team_id: int, project_id: int, ml_model_id: int, image_ids: list
289289
):
290-
raise NotImplementedError
290+
raise NotImplementedError

src/superannotate/lib/core/usecases.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,13 +1600,13 @@ def __init__(
16001600
self,
16011601
service: SuerannotateServiceProvider,
16021602
project: ProjectEntity,
1603-
folder_name: str,
1603+
folder: FolderEntity,
16041604
image_names: list,
16051605
user: str,
16061606
):
16071607
super().__init__()
16081608
self._project = project
1609-
self._folder_name = folder_name
1609+
self._folder = folder
16101610
self._image_names = image_names
16111611
self._user = user
16121612
self._service = service
@@ -1623,7 +1623,7 @@ def execute(self):
16231623
is_assigned = self._service.assign_images(
16241624
team_id=self._project.team_id,
16251625
project_id=self._project.uuid,
1626-
folder_name=self._folder_name,
1626+
folder_name=self._folder.name,
16271627
user=self._user,
16281628
image_names=self._image_names[
16291629
i : i + self.CHUNK_SIZE # noqa: E203
@@ -1643,23 +1643,29 @@ def __init__(
16431643
self,
16441644
service: SuerannotateServiceProvider,
16451645
project_entity: ProjectEntity,
1646-
folder_name: str,
1646+
folder: FolderEntity,
16471647
image_names: list,
16481648
):
16491649
super().__init__()
16501650
self._project_entity = project_entity
1651-
self._folder_name = folder_name
1651+
self._folder = folder
16521652
self._image_names = image_names
16531653
self._service = service
16541654

16551655
def execute(self):
1656+
# todo handling to backend side
16561657
for i in range(0, len(self._image_names), self.CHUNK_SIZE):
1657-
self._response.data = self._service.un_assign_images(
1658+
is_un_assigned = self._service.un_assign_images(
16581659
team_id=self._project_entity.team_id,
16591660
project_id=self._project_entity.uuid,
1660-
folder_name=self._folder_name,
1661-
image_names=self._image_names[i : i + self.CHUNK_SIZE],
1661+
folder_name=self._folder.name,
1662+
image_names=self._image_names[i : i + self.CHUNK_SIZE], # noqa: E203
16621663
)
1664+
if not is_un_assigned:
1665+
self._response.errors = AppException(
1666+
f"Cant un assign {', '.join(self._image_names[i : i + self.CHUNK_SIZE])}"
1667+
)
1668+
16631669
return self._response
16641670

16651671

@@ -1668,19 +1674,21 @@ def __init__(
16681674
self,
16691675
service: SuerannotateServiceProvider,
16701676
project_entity: ProjectEntity,
1671-
folder_name: str,
1677+
folder: FolderEntity,
16721678
):
16731679
super().__init__()
16741680
self._service = service
16751681
self._project_entity = project_entity
1676-
self._folder_name = folder_name
1682+
self._folder = folder
16771683

16781684
def execute(self):
1679-
self._response.data = self._service.un_assign_folder(
1685+
is_un_assigned = self._service.un_assign_folder(
16801686
team_id=self._project_entity.team_id,
16811687
project_id=self._project_entity.uuid,
1682-
folder_name=self._folder_name,
1688+
folder_name=self._folder.name,
16831689
)
1690+
if not is_un_assigned:
1691+
self._response.errors = AppException(f"Cant un assign {self._folder.name}")
16841692
return self._response
16851693

16861694

@@ -1689,29 +1697,29 @@ def __init__(
16891697
self,
16901698
service: SuerannotateServiceProvider,
16911699
project_entity: ProjectEntity,
1692-
folder_name: str,
1700+
folder: FolderEntity,
16931701
users: List[str],
16941702
):
16951703
super().__init__()
16961704
self._service = service
16971705
self._project_entity = project_entity
1698-
self._folder_name = folder_name
1706+
self._folder = folder
16991707
self._users = users
17001708

17011709
def execute(self):
17021710
is_assigned = self._service.assign_folder(
17031711
team_id=self._project_entity.team_id,
17041712
project_id=self._project_entity.uuid,
1705-
folder_name=self._folder_name,
1713+
folder_name=self._folder.name,
17061714
users=self._users,
17071715
)
17081716
if is_assigned:
17091717
logger.info(
1710-
f'Assigned {self._folder_name} to users: {", ".join(self._users)}'
1718+
f'Assigned {self._folder.name} to users: {", ".join(self._users)}'
17111719
)
17121720
else:
17131721
self._response.errors = AppException(
1714-
"Couldn't assign folder to users: {', '.join(self._users)"
1722+
f"Couldn't assign folder to users: {', '.join(self._users)}"
17151723
)
17161724
return self._response
17171725

src/superannotate/lib/infrastructure/controller.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -765,41 +765,42 @@ def assign_images(
765765
self, project_name: str, folder_name: str, image_names: list, user: str
766766
):
767767
project_entity = self._get_project(project_name)
768+
folder = self._get_folder(project_entity, folder_name)
768769
use_case = usecases.AssignImagesUseCase(
769770
project=project_entity,
770771
service=self._backend_client,
771-
folder_name=folder_name,
772+
folder=folder,
772773
image_names=image_names,
773774
user=user,
774775
)
775776
return use_case.execute()
776777

777778
def un_assign_images(self, project_name, folder_name, image_names):
778779
project = self._get_project(project_name)
779-
folder_name = self.get_folder_name(folder_name)
780+
folder = self._get_folder(folder_name)
780781
use_case = usecases.UnAssignImagesUseCase(
781782
project_entity=project,
782783
service=self._backend_client,
783-
folder_name=folder_name,
784+
folder=folder,
784785
image_names=image_names,
785786
)
786787
return use_case.execute()
787788

788789
def un_assign_folder(self, project_name: str, folder_name: str):
789790
project_entity = self._get_project(project_name)
791+
folder = self._get_folder(project_entity, folder_name)
790792
use_case = usecases.UnAssignFolderUseCase(
791-
service=self._backend_client,
792-
project_entity=project_entity,
793-
folder_name=folder_name,
793+
service=self._backend_client, project_entity=project_entity, folder=folder,
794794
)
795795
return use_case.execute()
796796

797797
def assign_folder(self, project_name: str, folder_name: str, users: List[str]):
798798
project_entity = self._get_project(project_name)
799+
folder = self._get_folder(project_entity, folder_name)
799800
use_case = usecases.AssignFolderUseCase(
800801
service=self._backend_client,
801802
project_entity=project_entity,
802-
folder_name=folder_name,
803+
folder=folder,
803804
users=users,
804805
)
805806
return use_case.execute()

src/superannotate/lib/infrastructure/repositories.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ def dict2entity(data: dict):
118118
name=data["name"],
119119
project_type=data["type"],
120120
status=data["status"],
121+
attachment_name=data["attachment_name"],
122+
attachment_path=data["attachment_path"],
123+
entropy_status=data["entropy_status"],
124+
sharing_status=data.get("sharing_status"),
125+
creator_id=data["creator_id"],
126+
upload_state=data["upload_state"],
121127
description=data["description"],
122128
folder_id=data.get("folder_id"),
123129
users=data.get("users", ()),

0 commit comments

Comments
 (0)