Skip to content

Commit b85ee41

Browse files
committed
Change share project
1 parent c72c9d9 commit b85ee41

File tree

5 files changed

+21
-16
lines changed

5 files changed

+21
-16
lines changed

src/superannotate/lib/core/entities/project_entities.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def __init__(
7676
folder_id: int = None,
7777
upload_state: int = None,
7878
users: Iterable = (),
79+
unverified_users: Iterable = (),
7980
contributors: List = None,
8081
settings: List = None,
8182
annotation_classes: List = None,
@@ -97,6 +98,7 @@ def __init__(
9798
self.folder_id = folder_id
9899
self.upload_state = upload_state
99100
self.users = users
101+
self.unverified_users = unverified_users
100102
self.contributors = contributors
101103
self.settings = settings
102104
self.annotation_classes = annotation_classes

src/superannotate/lib/core/serviceproviders.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ def get_annotation_classes(
4242
raise NotImplementedError
4343

4444
@abstractmethod
45-
def share_project(
46-
self, project_id: int, team_id: int, user_id: str, user_role: int
47-
):
45+
def share_project_bulk(self, project_id: int, team_id: int, users: list):
4846
raise NotImplementedError
4947

5048
@abstractmethod

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

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -433,14 +433,20 @@ def _copy_include_contributors(self, to_project: ProjectEntity):
433433
from_project = self._projects.get_one(
434434
uuid=self._project.uuid, team_id=self._project.team_id
435435
)
436+
users = []
436437
for user in from_project.users:
437-
self._backend_service.share_project(
438-
to_project.uuid,
439-
to_project.team_id,
440-
user.get("user_id"),
441-
user.get("user_role"),
438+
users.append(
439+
{"user_id": user.get("user_id"), "user_role": user.get("user_role")}
442440
)
443441

442+
for user in from_project.unverified_users:
443+
users.append(
444+
{"user_id": user.get("email"), "user_role": user.get("user_role")}
445+
)
446+
self._backend_service.share_project_bulk(
447+
to_project.uuid, to_project.team_id, users
448+
)
449+
444450
def _copy_settings(self, to_project: ProjectEntity):
445451
new_settings = self._settings_repo(self._backend_service, to_project)
446452
for setting in self.settings.get_all():
@@ -601,11 +607,10 @@ def user_role(self):
601607
return constances.UserRole.get_value(self._user_role)
602608

603609
def execute(self):
604-
self._response.data = self._service.share_project(
610+
self._response.data = self._service.share_project_bulk(
605611
team_id=self._project_entity.team_id,
606612
project_id=self._project_entity.uuid,
607-
user_id=self._user_id,
608-
user_role=self.user_role,
613+
users=[{"user_id": self._user_id, "user_role": self.user_role}],
609614
)
610615
if not self._response.errors:
611616
logger.info(

src/superannotate/lib/infrastructure/repositories.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ def dict2entity(data: dict):
134134
description=data["description"],
135135
folder_id=data.get("folder_id"),
136136
users=data.get("users", ()),
137+
unverified_users=data.get("unverified_users", ()),
137138
completed_images_count=data.get("completedImagesCount"),
138139
root_folder_completed_images_count=data.get(
139140
"rootFolderCompletedImagesCount"

src/superannotate/lib/infrastructure/services.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class SuperannotateBackendService(BaseBackendService):
174174
URL_PROJECT_SETTINGS = "project/{}/settings"
175175
URL_PROJECT_WORKFLOW = "project/{}/workflow"
176176
URL_SHARE_PROJECT = "project/{}/share"
177+
URL_SHARE_PROJECT_BULK = "project/{}/share/bulk"
177178
URL_ANNOTATION_CLASSES = "classes"
178179
URL_TEAM = "team"
179180
URL_INVITE_CONTRIBUTOR = "team/{}/invite"
@@ -421,16 +422,14 @@ def set_project_workflow_bulk(self, project_id: int, team_id: int, steps: list):
421422
)
422423
return res.json()
423424

424-
def share_project(
425-
self, project_id: int, team_id: int, user_id: int, user_role: int
426-
):
425+
def share_project_bulk(self, project_id: int, team_id: int, users: list):
427426
share_project_url = urljoin(
428-
self.api_url, self.URL_SHARE_PROJECT.format(project_id)
427+
self.api_url, self.URL_SHARE_PROJECT_BULK.format(project_id)
429428
)
430429
res = self._request(
431430
share_project_url,
432431
"post",
433-
data={"user_id": user_id, "user_role": user_role},
432+
data={"users": users},
434433
params={"team_id": team_id},
435434
)
436435
return res.json()

0 commit comments

Comments
 (0)