User Domain Schemas

Pydantic & Struct Data Transfer Objects (DTOs) for the Users sub-domain.

Utility Definitions

class RoleSlug(*values)[source]

Bases: StrEnum

Available user role slugs.

SUPERUSER = 'superuser'
FITNESS_TRAINER = 'fitness-trainer'
class PasswordValidator[source]

Bases: RegexValidator

Validator for user passwords.

User Information Models

class User(id: UUID, name: str | None, email: str, is_active: bool, is_superuser: bool, role_name: str, role_slug: str, created_at: datetime, updated_at: datetime)[source]

Bases: CamelizedBaseStruct

User properties to use for a response.

id: UUID
name: str | None
email: str
is_active: bool
is_superuser: bool
role_name: str
role_slug: str
created_at: datetime
updated_at: datetime
class UserAuth(id: UUID, name: str | None, email: str, is_active: bool, is_superuser: bool, role_slug: str)[source]

Bases: CamelizedBaseStruct

User model used for authentication context.

id: UUID
name: str | None
email: str
is_active: bool
is_superuser: bool
role_slug: str

User CRUD Models

class UserCreate[source]

Bases: CamelizedBaseSchema

Properties required to create a new user.

Fields:
field name: str | None = None
field email: EmailStr [Required]
field password: Annotated[str, MinLen(min_length=3), MaxLen(max_length=20)] [Required]
Constraints:
  • min_length = 3

  • max_length = 20

field is_active: bool = True (alias 'isActive')
field is_superuser: bool = False (alias 'isSuperuser')
class UserUpdate[source]

Bases: CamelizedBaseSchema

Data transfer object for optional user account updates.

Fields:
field name: str | None = None
field email: EmailStr | None = None
field password: Annotated[str, MinLen(min_length=3), MaxLen(max_length=20)] | None = None
field is_active: bool | None = None (alias 'isActive')
field is_superuser: bool | None = None (alias 'isSuperuser')

User Authentication Models

class AccountRegister[source]

Bases: CamelizedBaseSchema

Information provided by a user during public registration.

Fields:
field name: str | None = None
field email: EmailStr [Required]
field password: Annotated[str, PasswordValidator] [Required]
field confirm_password: str [Required] (alias 'confirmPassword')
AccountRegister.check_passwords_match() Self[source]

Ensure the ‘password’ and ‘confirm_password’ fields match.

class PasswordUpdate[source]

Bases: CamelizedBaseSchema

Input data for password rotation.

Fields:
field current_password: str [Required] (alias 'currentPassword')
field new_password: Annotated[str, PasswordValidator] [Required] (alias 'newPassword')

Role Management Models

class UserRoleAdd[source]

Bases: CamelizedBaseSchema

Payload for granting a specific role to a user.

Fields:
field role_slug: RoleSlug [Required] (alias 'roleSlug')
class UserRoleRevoke[source]

Bases: UserRoleAdd

Payload for revoking a specific role from a user.

field role_slug: RoleSlug [Required] (alias 'roleSlug')