Skip to content

Commit 3ddbd3b

Browse files
Narek MkhitaryanNarek Mkhitaryan
authored andcommitted
changed SDK auth flow
1 parent 7d9336b commit 3ddbd3b

File tree

17 files changed

+92
-105
lines changed

17 files changed

+92
-105
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def _track_method(self, args, kwargs, success: bool):
207207
function_name = self.function.__name__ if self.function else ""
208208
arguments = self.extract_arguments(self.function, *args, **kwargs)
209209
event_name, properties = self.default_parser(function_name, arguments)
210-
user_id = client.controller.team_data.creator_id
210+
user_id = client.controller.current_user.email
211211
team_name = client.controller.team_data.name
212212

213213
properties["Success"] = success

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1717,7 +1717,7 @@ def upload_annotations_from_folder_to_project(
17171717
response = self.controller.annotations.upload_from_folder(
17181718
project=project,
17191719
folder=folder,
1720-
team=self.controller.team,
1720+
user=self.controller.current_user,
17211721
annotation_paths=annotation_paths, # noqa: E203
17221722
client_s3_bucket=from_s3_bucket,
17231723
folder_path=folder_path,
@@ -1794,7 +1794,7 @@ def upload_image_annotations(
17941794
folder=folder,
17951795
image=image,
17961796
annotations=annotation_json,
1797-
team=self.controller.team,
1797+
user=self.controller.current_user,
17981798
mask=mask,
17991799
verbose=verbose,
18001800
keep_status=keep_status,
@@ -2155,7 +2155,9 @@ def add_contributors_to_project(
21552155
for email in emails
21562156
]
21572157
response = self.controller.projects.add_contributors(
2158-
team=self.controller.get_team().data, project=project, contributors=contributors
2158+
team=self.controller.get_team().data,
2159+
project=project,
2160+
contributors=contributors,
21592161
)
21602162
if response.errors:
21612163
raise AppException(response.errors)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from lib.core.entities.project import ProjectEntity
1717
from lib.core.entities.project import SettingEntity
1818
from lib.core.entities.project import TeamEntity
19+
from lib.core.entities.project import UserEntity
1920
from lib.core.entities.project import WorkflowEntity
2021
from lib.core.entities.project_entities import BaseEntity
2122
from lib.core.entities.project_entities import ImageInfoEntity
@@ -47,6 +48,7 @@
4748
"S3FileEntity",
4849
"AnnotationClassEntity",
4950
"TeamEntity",
51+
"UserEntity",
5052
"MLModelEntity",
5153
"IntegrationEntity",
5254
]

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ class UserEntity(BaseModel):
172172
picture: Optional[str]
173173
user_role: Optional[int]
174174

175+
class Config:
176+
extra = Extra.ignore
177+
175178

176179
class TeamEntity(BaseModel):
177180
id: Optional[int]

src/superannotate/lib/core/repositories.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from abc import ABC
2-
from abc import abstractmethod
32
from typing import Any
43
from typing import List
54
from typing import Optional
@@ -12,24 +11,20 @@
1211

1312

1413
class BaseReadOnlyRepository(ABC):
15-
1614
def get_one(self, uuid: Union[Condition, int]) -> Optional[Union[BaseModel]]:
1715
raise NotImplementedError
1816

19-
2017
def get_all(self, condition: Optional[Condition] = None) -> List[Union[BaseModel]]:
2118
raise NotImplementedError
2219

2320

2421
class BaseManageableRepository(BaseReadOnlyRepository):
25-
2622
def insert(self, entity: BaseEntity) -> BaseEntity:
2723
raise NotImplementedError
2824

2925
def update(self, entity: BaseEntity) -> BaseEntity:
3026
raise NotImplementedError
3127

32-
3328
def delete(self, uuid: Any):
3429
raise NotImplementedError
3530

src/superannotate/lib/core/service_types.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ class TeamResponse(ServiceResponse):
150150
data: entities.TeamEntity = None
151151

152152

153+
class UserResponse(ServiceResponse):
154+
data: entities.UserEntity = None
155+
156+
153157
class ModelListResponse(ServiceResponse):
154158
data: List[entities.AnnotationClassEntity] = None
155159

src/superannotate/lib/core/serviceproviders.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from lib.core.service_types import UploadAnnotationsResponse
2727
from lib.core.service_types import UploadCustomFieldValuesResponse
2828
from lib.core.service_types import UserLimitsResponse
29+
from lib.core.service_types import UserResponse
2930
from lib.core.types import Attachment
3031
from lib.core.types import AttachmentMeta
3132

@@ -507,6 +508,10 @@ class BaseServiceProvider:
507508
def get_team(self, team_id: int) -> TeamResponse:
508509
raise NotImplementedError
509510

511+
@abstractmethod
512+
def get_user(self, team_id: int) -> UserResponse:
513+
raise NotImplementedError
514+
510515
@abstractmethod
511516
def list_templates(self) -> ServiceResponse:
512517
raise NotImplementedError

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from lib.core.entities import FolderEntity
3838
from lib.core.entities import ImageEntity
3939
from lib.core.entities import ProjectEntity
40-
from lib.core.entities import TeamEntity
40+
from lib.core.entities import UserEntity
4141
from lib.core.exceptions import AppException
4242
from lib.core.reporter import Reporter
4343
from lib.core.response import Response
@@ -482,7 +482,7 @@ def __init__(
482482
reporter: Reporter,
483483
project: ProjectEntity,
484484
folder: FolderEntity,
485-
team: TeamEntity,
485+
user: UserEntity,
486486
annotation_paths: List[str],
487487
service_provider: BaseServiceProvider,
488488
pre_annotation: bool = False,
@@ -493,7 +493,7 @@ def __init__(
493493
super().__init__(reporter)
494494
self._project = project
495495
self._folder = folder
496-
self._team = team
496+
self._user = user
497497
self._service_provider = service_provider
498498
self._annotation_classes = service_provider.annotation_classes.list(
499499
Condition("project_id", project.id, EQ)
@@ -581,7 +581,7 @@ def prepare_annotation(self, annotation: dict, size) -> dict:
581581
raise AppException(errors)
582582

583583
annotation = UploadAnnotationUseCase.set_defaults(
584-
self._team.creator_id, annotation, self._project.type
584+
self._user.email, annotation, self._project.type
585585
)
586586
return annotation
587587

@@ -827,7 +827,7 @@ def __init__(
827827
project: ProjectEntity,
828828
folder: FolderEntity,
829829
image: ImageEntity,
830-
team: TeamEntity,
830+
user: UserEntity,
831831
service_provider: BaseServiceProvider,
832832
reporter: Reporter,
833833
annotation_upload_data: UploadAnnotationAuthData = None,
@@ -844,7 +844,7 @@ def __init__(
844844
self._project = project
845845
self._folder = folder
846846
self._image = image
847-
self._team = team
847+
self._user = user
848848
self._service_provider = service_provider
849849
self._annotation_classes = service_provider.annotation_classes.list(
850850
Condition("project_id", project.id, EQ)
@@ -973,7 +973,7 @@ def execute(self):
973973
annotation_json, mask = self._get_annotation_json()
974974
errors = self._validate_json(annotation_json)
975975
annotation_json = UploadAnnotationUseCase.set_defaults(
976-
self._team.creator_id, annotation_json, self._project.type
976+
self._user.email, annotation_json, self._project.type
977977
)
978978
if not errors:
979979
annotation_file = io.StringIO()

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,9 @@ def execute(self):
507507
failed_images = []
508508
while len(success_images) + len(failed_images) != len(image_ids):
509509
images_metadata = self._service_provider.items.list_by_names(
510-
project=self._project, folder=self._folder, names=self._images_list
510+
project=self._project,
511+
folder=self._folder,
512+
names=self._images_list,
511513
).data
512514

513515
success_images = [

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,25 @@ def execute(self):
609609
return self._response
610610

611611

612+
class GetCurrentUserUseCase(BaseUseCase):
613+
def __init__(self, service_provider: BaseServiceProvider, team_id: int):
614+
super().__init__()
615+
self._service_provider = service_provider
616+
self._team_id = team_id
617+
618+
def execute(self):
619+
try:
620+
response = self._service_provider.get_user(self._team_id)
621+
if not response.ok:
622+
raise AppException(response.error)
623+
self._response.data = response.data
624+
except Exception:
625+
raise AppException(
626+
"Unable to retrieve user data. Please verify your credentials."
627+
) from None
628+
return self._response
629+
630+
612631
class SearchContributorsUseCase(BaseUseCase):
613632
def __init__(
614633
self,

0 commit comments

Comments
 (0)