Skip to content

Commit f4efbcf

Browse files
committed
Remove contributor entity
1 parent ad8ffd3 commit f4efbcf

File tree

5 files changed

+27
-34
lines changed

5 files changed

+27
-34
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3525,9 +3525,9 @@ def add_contributors_to_project(
35253525
"""
35263526
project = self.controller.projects.get_by_name(project).data
35273527
contributors = [
3528-
entities.ContributorEntity(
3529-
user_id=email,
3530-
user_role=self.controller.service_provider.get_role_id(project, role),
3528+
entities.WMProjectUserEntity(
3529+
email=email,
3530+
role=self.controller.service_provider.get_role_id(project, role),
35313531
)
35323532
for email in emails
35333533
]

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from lib.core.entities.multimodal_form import FormModel
1616
from lib.core.entities.multimodal_form import generate_classes_from_form
1717
from lib.core.entities.project import AttachmentEntity
18-
from lib.core.entities.project import ContributorEntity
1918
from lib.core.entities.project import CustomFieldEntity
2019
from lib.core.entities.project import ProjectEntity
2120
from lib.core.entities.project import SettingEntity
@@ -25,6 +24,7 @@
2524
from lib.core.entities.project import WorkflowEntity
2625
from lib.core.entities.project_entities import BaseEntity
2726
from lib.core.entities.project_entities import S3FileEntity
27+
from lib.core.entities.work_managament import WMProjectUserEntity
2828

2929
__all__ = [
3030
# base
@@ -47,7 +47,7 @@
4747
"ProjectEntity",
4848
"WorkflowEntity",
4949
"CategoryEntity",
50-
"ContributorEntity",
50+
"WMProjectUserEntity",
5151
"ConfigEntity",
5252
"StepEntity",
5353
"FolderEntity",

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

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from lib.core.entities.base import BaseModel
99
from lib.core.entities.classes import AnnotationClassEntity
10+
from lib.core.entities.work_managament import WMProjectUserEntity
1011
from lib.core.enums import BaseTitledEnum
1112
from lib.core.enums import ProjectStatus
1213
from lib.core.enums import ProjectType
@@ -78,16 +79,6 @@ def __copy__(self):
7879
return SettingEntity(attribute=self.attribute, value=self.value)
7980

8081

81-
class ContributorEntity(BaseModel):
82-
first_name: Optional[str]
83-
last_name: Optional[str]
84-
user_id: str
85-
user_role: Union[int, str]
86-
87-
class Config:
88-
extra = Extra.ignore
89-
90-
9182
class WorkflowEntity(TimedBaseModel):
9283
id: Optional[int]
9384
name: Optional[str]
@@ -118,9 +109,9 @@ class ProjectEntity(TimedBaseModel):
118109
workflow: Optional[WorkflowEntity]
119110
sync_status: Optional[int]
120111
upload_state: Optional[int]
121-
users: Optional[List[ContributorEntity]] = []
112+
users: Optional[List[WMProjectUserEntity]] = []
122113
unverified_users: Optional[List[Any]] = []
123-
contributors: List[ContributorEntity] = []
114+
contributors: List[WMProjectUserEntity] = []
124115
settings: List[SettingEntity] = []
125116
classes: List[AnnotationClassEntity] = []
126117
item_count: Optional[int] = Field(None, alias="imageCount")

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

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
from lib.core.conditions import Condition
99
from lib.core.conditions import CONDITION_EQ as EQ
1010
from lib.core.entities import AnnotationClassEntity
11-
from lib.core.entities import ContributorEntity
1211
from lib.core.entities import FormModel
1312
from lib.core.entities import generate_classes_from_form
1413
from lib.core.entities import ProjectEntity
1514
from lib.core.entities import SettingEntity
1615
from lib.core.entities import TeamEntity
16+
from lib.core.entities import WMProjectUserEntity
1717
from lib.core.enums import CustomFieldEntityEnum
1818
from lib.core.enums import CustomFieldType
1919
from lib.core.enums import WMUserStateEnum
@@ -830,7 +830,7 @@ def __init__(
830830
self,
831831
team: TeamEntity,
832832
project: ProjectEntity,
833-
contributors: List[ContributorEntity],
833+
contributors: List[WMProjectUserEntity],
834834
service_provider: BaseServiceProvider,
835835
):
836836
super().__init__()
@@ -842,7 +842,7 @@ def __init__(
842842
def validate_emails(self):
843843
email_entity_map = {}
844844
for c in self._contributors:
845-
email_entity_map[c.user_id] = c
845+
email_entity_map[c.email] = c
846846
len_unique, len_provided = len(email_entity_map), len(self._contributors)
847847
if len_unique < len_provided:
848848
logger.info(
@@ -853,7 +853,13 @@ def validate_emails(self):
853853
def execute(self):
854854
if self.is_valid():
855855
team_users = set()
856-
project_users = {user.user_id for user in self._project.users}
856+
project_users = self._service_provider.work_management.list_users(
857+
EmptyQuery(),
858+
include_custom_fields=True,
859+
parent_entity=CustomFieldEntityEnum.PROJECT,
860+
project_id=self._project.id,
861+
).data
862+
project_emails = {user.email for user in project_users}
857863
users = self._service_provider.work_management.list_users(EmptyQuery()).data
858864
pending_invitations = []
859865
for user in users:
@@ -864,16 +870,16 @@ def execute(self):
864870

865871
# collecting pending project users which is not admin
866872
for user in self._project.unverified_users:
867-
project_users.add(user["email"])
873+
project_emails.add(user["email"])
868874

869875
role_email_map = defaultdict(list)
870876
to_skip = []
871877
to_add = []
872878
for contributor in self._contributors:
873-
role_email_map[contributor.user_role].append(contributor.user_id)
874-
for role, emails in role_email_map.items():
875-
role_id = self._service_provider.get_role_id(self._project, role)
876-
_to_add = list(team_users.intersection(emails) - project_users)
879+
role_email_map[contributor.role].append(contributor.email)
880+
for role_id, emails in role_email_map.items():
881+
role_name = self._service_provider.get_role_name(self._project, role_id)
882+
_to_add = list(team_users.intersection(emails) - project_emails)
877883
to_add.extend(_to_add)
878884
to_skip.extend(list(set(emails).difference(_to_add)))
879885
if _to_add:
@@ -893,7 +899,7 @@ def execute(self):
893899
if response and not response.data.get("invalidUsers"):
894900
logger.info(
895901
f"Added {len(_to_add)}/{len(emails)} "
896-
f"contributors to the project {self._project.name} with the {role} role."
902+
f"contributors to the project {self._project.name} with the {role_name} role."
897903
)
898904

899905
if to_skip:
@@ -902,7 +908,7 @@ def execute(self):
902908
"contributors that are out of the team scope or already have access to the project."
903909
)
904910
self._response.data = to_add, to_skip
905-
return self._response
911+
return self._response
906912

907913

908914
class InviteContributorsToTeam(BaseUserBasedUseCase):

src/superannotate/lib/infrastructure/controller.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from lib.core.entities import AttachmentEntity
2222
from lib.core.entities import BaseItemEntity
2323
from lib.core.entities import ConfigEntity
24-
from lib.core.entities import ContributorEntity
2524
from lib.core.entities import CustomFieldEntity
2625
from lib.core.entities import FolderEntity
2726
from lib.core.entities import ImageEntity
@@ -30,6 +29,7 @@
3029
from lib.core.entities import SettingEntity
3130
from lib.core.entities import TeamEntity
3231
from lib.core.entities import UserEntity
32+
from lib.core.entities import WMProjectUserEntity
3333
from lib.core.entities.classes import AnnotationClassEntity
3434
from lib.core.entities.filters import ItemFilters
3535
from lib.core.entities.filters import ProjectFilters
@@ -592,13 +592,9 @@ def add_contributors(
592592
self,
593593
team: TeamEntity,
594594
project: ProjectEntity,
595-
contributors: List[ContributorEntity],
595+
contributors: List[WMProjectUserEntity],
596596
):
597597
project = self.get_metadata(project, include_contributors=True).data
598-
for contributor in contributors:
599-
contributor.user_role = self.service_provider.get_role_name(
600-
project, contributor.user_role
601-
)
602598
use_case = usecases.AddContributorsToProject(
603599
team=team,
604600
project=project,

0 commit comments

Comments
 (0)