Skip to content

user

OAuthAccountRead

Bases: BaseModel

Schema for storing essential OAuthAccount information within UserRead.oauth_accounts.

Attributes:

Name Type Description
id int

ID of the row in fractal-owned oauthaccount table.

account_email str

Email associated to OAuth account

oauth_name str

Name of the OAuth provider (e.g. github)

Source code in fractal_server/app/schemas/user.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class OAuthAccountRead(BaseModel):
    """
    Schema for storing essential `OAuthAccount` information within
    `UserRead.oauth_accounts`.

    Attributes:
        id: ID of the row in fractal-owned `oauthaccount` table.
        account_email: Email associated to OAuth account
        oauth_name: Name of the OAuth provider (e.g. `github`)
    """

    id: int
    account_email: str
    oauth_name: str

UserCreate

Bases: BaseUserCreate

Schema for User creation.

Attributes:

Name Type Description
username Optional[str]
Source code in fractal_server/app/schemas/user.py
86
87
88
89
90
91
92
93
94
95
96
97
98
class UserCreate(schemas.BaseUserCreate):
    """
    Schema for `User` creation.

    Attributes:
        username:
    """

    username: Optional[str]

    # Validators

    _username = validator("username", allow_reuse=True)(valstr("username"))

UserRead

Bases: BaseUser[int]

Schema for User read from database.

Attributes:

Name Type Description
username Optional[str]
Source code in fractal_server/app/schemas/user.py
36
37
38
39
40
41
42
43
44
45
46
class UserRead(schemas.BaseUser[int]):
    """
    Schema for `User` read from database.

    Attributes:
        username:
    """

    username: Optional[str]
    group_ids_names: Optional[list[tuple[int, str]]] = None
    oauth_accounts: list[OAuthAccountRead]

UserUpdate

Bases: BaseUserUpdate

Schema for User update.

Attributes:

Name Type Description
username Optional[str]
Source code in fractal_server/app/schemas/user.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class UserUpdate(schemas.BaseUserUpdate, extra=Extra.forbid):
    """
    Schema for `User` update.

    Attributes:
        username:
    """

    username: Optional[str]

    # Validators
    _username = validator("username", allow_reuse=True)(valstr("username"))

    @validator(
        "is_active",
        "is_verified",
        "is_superuser",
        "email",
        "password",
        always=False,
    )
    def cant_set_none(cls, v, field):
        if v is None:
            raise ValueError(f"Cannot set {field.name}=None")
        return v

UserUpdateGroups

Bases: BaseModel

Schema for POST /auth/users/{user_id}/set-groups/

Source code in fractal_server/app/schemas/user.py
101
102
103
104
105
106
107
108
109
110
111
class UserUpdateGroups(BaseModel, extra=Extra.forbid):
    """
    Schema for `POST /auth/users/{user_id}/set-groups/`

    """

    group_ids: list[int] = Field(min_items=1)

    _group_ids = validator("group_ids", allow_reuse=True)(
        val_unique_list("group_ids")
    )

UserUpdateStrict

Bases: BaseModel

Schema for User self-editing.

Attributes:

Source code in fractal_server/app/schemas/user.py
76
77
78
79
80
81
82
83
class UserUpdateStrict(BaseModel, extra=Extra.forbid):
    """
    Schema for `User` self-editing.

    Attributes:
    """

    pass