Coverage for apps/kwai-api/src/kwai_api/v1/auth/schemas/user_account.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Schemas for a user account resource.""" 

2 

3from kwai_core.json_api import ( 

4 Meta, 

5 Relationship, 

6) 

7from pydantic import BaseModel, Field 

8 

9from kwai_api.schemas.resources import UserInvitationResourceIdentifier 

10from kwai_api.v1.auth.schemas.resources import UserAccountResourceIdentifier 

11 

12 

13class BaseUserAccountAttributes(BaseModel): 

14 """Base attributes for a user account JSON:API resource.""" 

15 

16 first_name: str 

17 last_name: str 

18 remark: str 

19 

20 

21class UserAccountAttributes(BaseUserAccountAttributes): 

22 """Attributes of a user account JSON:API resource.""" 

23 

24 email: str 

25 last_login: str | None 

26 last_unsuccessful_login: str | None 

27 revoked: bool 

28 admin: bool 

29 

30 

31class CreateUserAccountAttributes(BaseUserAccountAttributes): 

32 """Attributes for creating a user account.""" 

33 

34 password: str 

35 

36 

37class UserAccountResource(UserAccountResourceIdentifier): 

38 """A JSON:API resource for a user account.""" 

39 

40 attributes: UserAccountAttributes 

41 

42 

43class UserAccountDocument(BaseModel): 

44 """A JSON:API document for one user account.""" 

45 

46 data: UserAccountResource 

47 

48 

49class UserAccountsDocument(BaseModel): 

50 """A JSON:API document for multiple user accounts.""" 

51 

52 meta: Meta 

53 data: list[UserAccountResource] = Field(default_factory=list) 

54 

55 

56class CreateUserAccountRelationships(BaseModel): 

57 """Relationships needed for creating a user account.""" 

58 

59 user_invitation: Relationship[UserInvitationResourceIdentifier] 

60 

61 

62class CreateUserAccountResource(UserAccountResourceIdentifier): 

63 """A JSON:API resource for creating a user account.""" 

64 

65 attributes: CreateUserAccountAttributes 

66 relationships: CreateUserAccountRelationships 

67 

68 

69class CreateUserAccountDocument(BaseModel): 

70 """A specific JSON:API document for creating a user account.""" 

71 

72 data: CreateUserAccountResource