4
4
ResourceNotFoundError ,
5
5
UnprocessableEntityError ,
6
6
)
7
- from typing import Set , Iterator , Any
7
+ from typing import Set , Iterator , Any , List
8
8
from pydantic import (
9
9
Field ,
10
10
field_validator ,
@@ -25,7 +25,7 @@ class ProjectMembership(_CamelCaseMixin):
25
25
"""
26
26
27
27
project_id : str
28
- role : Optional [Role ] = None
28
+ role : Optional [Role ] = Field ( default = None )
29
29
30
30
def __hash__ (self ) -> int :
31
31
return self .project_id .__hash__ ()
@@ -34,7 +34,7 @@ def __hash__(self) -> int:
34
34
def serialize_model (self ):
35
35
return {
36
36
"projectId" : self .project_id ,
37
- "roleId" : None if self .role is None else self .role .id ,
37
+ "roleId" : None if self .role is None else self .role .uid ,
38
38
}
39
39
40
40
@@ -214,6 +214,7 @@ def update(self) -> "Member":
214
214
Raises:
215
215
ResourceNotFoundError: If the update fails due to unknown member
216
216
UnprocessableEntityError: If the update fails due to a malformed input
217
+ ValueError: If the member id is current member id.
217
218
"""
218
219
query = """
219
220
mutation SetUserAccessPyApi($id: ID!, $roleId: ID!, $canAccessAllProjects: Boolean!, $groupIds: [String!], $projectMemberships: [ProjectMembershipsInput!]) {
@@ -230,13 +231,16 @@ def update(self) -> "Member":
230
231
"id" : self .id ,
231
232
"roleId" : self .default_role .uid if self .default_role else None ,
232
233
"canAccessAllProjects" : self .can_access_all_projects ,
233
- "groupIds" : self .user_group_ids ,
234
+ "groupIds" : list ( self .user_group_ids ) ,
234
235
"projectMemberships" : [
235
236
project_membership .model_dump ()
236
237
for project_membership in self .project_memberships
237
238
],
238
239
}
239
240
241
+ if self .id == self ._current_user_id :
242
+ raise ValueError ("Unable to update self" )
243
+
240
244
try :
241
245
result = self .client .execute (query , params , experimental = True )
242
246
if not result :
@@ -282,7 +286,7 @@ def delete(self) -> bool:
282
286
raise ResourceNotFoundError (
283
287
message = "Failed to delete member as member does not exist"
284
288
)
285
- return result ["data" ][ " updateUser" ]["deleted" ]
289
+ return result ["updateUser" ]["deleted" ]
286
290
287
291
def _get_project_memberships (self , user_id : str ) -> Set [ProjectMembership ]:
288
292
"""
@@ -331,8 +335,8 @@ def _get_project_memberships(self, user_id: str) -> Set[ProjectMembership]:
331
335
def get_members (
332
336
self ,
333
337
search : str = "" ,
334
- roles : Optional [list [Role ]] = None ,
335
- group_ids : Optional [list [str ]] = None ,
338
+ roles : Optional [List [Role ]] = None ,
339
+ group_ids : Optional [List [str ]] = None ,
336
340
) -> Iterator ["Member" ]:
337
341
"""
338
342
Gets all members in Labelbox.
0 commit comments