Skip to content

Commit 19a7be3

Browse files
authored
feat(iam): add personal data to User (#920)
1 parent ad4a4b3 commit 19a7be3

File tree

6 files changed

+258
-34
lines changed

6 files changed

+258
-34
lines changed

scaleway-async/scaleway_async/iam/v1alpha1/api.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,13 +498,21 @@ async def update_user(
498498
user_id: str,
499499
tags: Optional[List[str]] = None,
500500
email: Optional[str] = None,
501+
first_name: Optional[str] = None,
502+
last_name: Optional[str] = None,
503+
phone_number: Optional[str] = None,
504+
locale: Optional[str] = None,
501505
) -> User:
502506
"""
503507
Update a user.
504508
Update the parameters of a user, including `tags`.
505509
:param user_id: ID of the user to update.
506510
:param tags: New tags for the user (maximum of 10 tags).
507511
:param email: IAM member email.
512+
:param first_name: IAM member first name.
513+
:param last_name: IAM member last name.
514+
:param phone_number: IAM member phone number.
515+
:param locale: IAM member locale.
508516
:return: :class:`User <User>`
509517
510518
Usage:
@@ -525,6 +533,10 @@ async def update_user(
525533
user_id=user_id,
526534
tags=tags,
527535
email=email,
536+
first_name=first_name,
537+
last_name=last_name,
538+
phone_number=phone_number,
539+
locale=locale,
528540
),
529541
self.client,
530542
),

scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -618,10 +618,30 @@ def unmarshal_User(data: Any) -> User:
618618
if field is not None:
619619
args["username"] = field
620620

621+
field = data.get("first_name", None)
622+
if field is not None:
623+
args["first_name"] = field
624+
625+
field = data.get("last_name", None)
626+
if field is not None:
627+
args["last_name"] = field
628+
629+
field = data.get("phone_number", None)
630+
if field is not None:
631+
args["phone_number"] = field
632+
633+
field = data.get("locale", None)
634+
if field is not None:
635+
args["locale"] = field
636+
621637
field = data.get("organization_id", None)
622638
if field is not None:
623639
args["organization_id"] = field
624640

641+
field = data.get("deletable", None)
642+
if field is not None:
643+
args["deletable"] = field
644+
625645
field = data.get("created_at", None)
626646
if field is not None:
627647
args["created_at"] = parser.isoparse(field) if isinstance(field, str) else field
@@ -634,9 +654,13 @@ def unmarshal_User(data: Any) -> User:
634654
else:
635655
args["updated_at"] = None
636656

637-
field = data.get("deletable", None)
657+
field = data.get("last_login_at", None)
638658
if field is not None:
639-
args["deletable"] = field
659+
args["last_login_at"] = (
660+
parser.isoparse(field) if isinstance(field, str) else field
661+
)
662+
else:
663+
args["last_login_at"] = None
640664

641665
field = data.get("type", None)
642666
if field is not None:
@@ -662,14 +686,6 @@ def unmarshal_User(data: Any) -> User:
662686
if field is not None:
663687
args["locked"] = field
664688

665-
field = data.get("last_login_at", None)
666-
if field is not None:
667-
args["last_login_at"] = (
668-
parser.isoparse(field) if isinstance(field, str) else field
669-
)
670-
else:
671-
args["last_login_at"] = None
672-
673689
field = data.get("two_factor_enabled", None)
674690
if field is not None:
675691
args["two_factor_enabled"] = field
@@ -1436,6 +1452,18 @@ def marshal_CreateUserRequestMember(
14361452
if request.password is not None:
14371453
output["password"] = request.password
14381454

1455+
if request.first_name is not None:
1456+
output["first_name"] = request.first_name
1457+
1458+
if request.last_name is not None:
1459+
output["last_name"] = request.last_name
1460+
1461+
if request.phone_number is not None:
1462+
output["phone_number"] = request.phone_number
1463+
1464+
if request.locale is not None:
1465+
output["locale"] = request.locale
1466+
14391467
return output
14401468

14411469

@@ -1647,6 +1675,18 @@ def marshal_UpdateUserRequest(
16471675
if request.email is not None:
16481676
output["email"] = request.email
16491677

1678+
if request.first_name is not None:
1679+
output["first_name"] = request.first_name
1680+
1681+
if request.last_name is not None:
1682+
output["last_name"] = request.last_name
1683+
1684+
if request.phone_number is not None:
1685+
output["phone_number"] = request.phone_number
1686+
1687+
if request.locale is not None:
1688+
output["locale"] = request.locale
1689+
16501690
return output
16511691

16521692

scaleway-async/scaleway_async/iam/v1alpha1/types.py

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,26 @@ class CreateUserRequestMember:
324324
The member's password.
325325
"""
326326

327+
first_name: str
328+
"""
329+
The member's first name.
330+
"""
331+
332+
last_name: str
333+
"""
334+
The member's last name.
335+
"""
336+
337+
phone_number: str
338+
"""
339+
The member's phone number.
340+
"""
341+
342+
locale: str
343+
"""
344+
The member's locale.
345+
"""
346+
327347

328348
@dataclass
329349
class Connection:
@@ -822,11 +842,36 @@ class User:
822842
User identifier unique to the Organization.
823843
"""
824844

845+
first_name: str
846+
"""
847+
First name of the user.
848+
"""
849+
850+
last_name: str
851+
"""
852+
Last name of the user.
853+
"""
854+
855+
phone_number: str
856+
"""
857+
Phone number of the user.
858+
"""
859+
860+
locale: str
861+
"""
862+
Locale of the user.
863+
"""
864+
825865
organization_id: str
826866
"""
827867
ID of the Organization.
828868
"""
829869

870+
deletable: bool
871+
"""
872+
Deletion status of user. Owners cannot be deleted.
873+
"""
874+
830875
created_at: Optional[datetime]
831876
"""
832877
Date user was created.
@@ -837,9 +882,9 @@ class User:
837882
Date of last user update.
838883
"""
839884

840-
deletable: bool
885+
last_login_at: Optional[datetime]
841886
"""
842-
Deletion status of user. Owners cannot be deleted.
887+
Date of the last login.
843888
"""
844889

845890
type_: UserType
@@ -872,11 +917,6 @@ class User:
872917
Defines whether the user is locked.
873918
"""
874919

875-
last_login_at: Optional[datetime]
876-
"""
877-
Date of the last login.
878-
"""
879-
880920
two_factor_enabled: Optional[bool]
881921
"""
882922
Deprecated, use "mfa" instead.
@@ -2097,6 +2137,26 @@ class UpdateUserRequest:
20972137
IAM member email.
20982138
"""
20992139

2140+
first_name: Optional[str]
2141+
"""
2142+
IAM member first name.
2143+
"""
2144+
2145+
last_name: Optional[str]
2146+
"""
2147+
IAM member last name.
2148+
"""
2149+
2150+
phone_number: Optional[str]
2151+
"""
2152+
IAM member phone number.
2153+
"""
2154+
2155+
locale: Optional[str]
2156+
"""
2157+
IAM member locale.
2158+
"""
2159+
21002160

21012161
@dataclass
21022162
class UpdateUserUsernameRequest:

scaleway/scaleway/iam/v1alpha1/api.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,13 +498,21 @@ def update_user(
498498
user_id: str,
499499
tags: Optional[List[str]] = None,
500500
email: Optional[str] = None,
501+
first_name: Optional[str] = None,
502+
last_name: Optional[str] = None,
503+
phone_number: Optional[str] = None,
504+
locale: Optional[str] = None,
501505
) -> User:
502506
"""
503507
Update a user.
504508
Update the parameters of a user, including `tags`.
505509
:param user_id: ID of the user to update.
506510
:param tags: New tags for the user (maximum of 10 tags).
507511
:param email: IAM member email.
512+
:param first_name: IAM member first name.
513+
:param last_name: IAM member last name.
514+
:param phone_number: IAM member phone number.
515+
:param locale: IAM member locale.
508516
:return: :class:`User <User>`
509517
510518
Usage:
@@ -525,6 +533,10 @@ def update_user(
525533
user_id=user_id,
526534
tags=tags,
527535
email=email,
536+
first_name=first_name,
537+
last_name=last_name,
538+
phone_number=phone_number,
539+
locale=locale,
528540
),
529541
self.client,
530542
),

scaleway/scaleway/iam/v1alpha1/marshalling.py

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -618,10 +618,30 @@ def unmarshal_User(data: Any) -> User:
618618
if field is not None:
619619
args["username"] = field
620620

621+
field = data.get("first_name", None)
622+
if field is not None:
623+
args["first_name"] = field
624+
625+
field = data.get("last_name", None)
626+
if field is not None:
627+
args["last_name"] = field
628+
629+
field = data.get("phone_number", None)
630+
if field is not None:
631+
args["phone_number"] = field
632+
633+
field = data.get("locale", None)
634+
if field is not None:
635+
args["locale"] = field
636+
621637
field = data.get("organization_id", None)
622638
if field is not None:
623639
args["organization_id"] = field
624640

641+
field = data.get("deletable", None)
642+
if field is not None:
643+
args["deletable"] = field
644+
625645
field = data.get("created_at", None)
626646
if field is not None:
627647
args["created_at"] = parser.isoparse(field) if isinstance(field, str) else field
@@ -634,9 +654,13 @@ def unmarshal_User(data: Any) -> User:
634654
else:
635655
args["updated_at"] = None
636656

637-
field = data.get("deletable", None)
657+
field = data.get("last_login_at", None)
638658
if field is not None:
639-
args["deletable"] = field
659+
args["last_login_at"] = (
660+
parser.isoparse(field) if isinstance(field, str) else field
661+
)
662+
else:
663+
args["last_login_at"] = None
640664

641665
field = data.get("type", None)
642666
if field is not None:
@@ -662,14 +686,6 @@ def unmarshal_User(data: Any) -> User:
662686
if field is not None:
663687
args["locked"] = field
664688

665-
field = data.get("last_login_at", None)
666-
if field is not None:
667-
args["last_login_at"] = (
668-
parser.isoparse(field) if isinstance(field, str) else field
669-
)
670-
else:
671-
args["last_login_at"] = None
672-
673689
field = data.get("two_factor_enabled", None)
674690
if field is not None:
675691
args["two_factor_enabled"] = field
@@ -1436,6 +1452,18 @@ def marshal_CreateUserRequestMember(
14361452
if request.password is not None:
14371453
output["password"] = request.password
14381454

1455+
if request.first_name is not None:
1456+
output["first_name"] = request.first_name
1457+
1458+
if request.last_name is not None:
1459+
output["last_name"] = request.last_name
1460+
1461+
if request.phone_number is not None:
1462+
output["phone_number"] = request.phone_number
1463+
1464+
if request.locale is not None:
1465+
output["locale"] = request.locale
1466+
14391467
return output
14401468

14411469

@@ -1647,6 +1675,18 @@ def marshal_UpdateUserRequest(
16471675
if request.email is not None:
16481676
output["email"] = request.email
16491677

1678+
if request.first_name is not None:
1679+
output["first_name"] = request.first_name
1680+
1681+
if request.last_name is not None:
1682+
output["last_name"] = request.last_name
1683+
1684+
if request.phone_number is not None:
1685+
output["phone_number"] = request.phone_number
1686+
1687+
if request.locale is not None:
1688+
output["locale"] = request.locale
1689+
16501690
return output
16511691

16521692

0 commit comments

Comments
 (0)