from typing import ClassVar from ninja import ModelSchema, Schema from apps.users.models import User, UserRole class UserOut(ModelSchema): class Meta: model = User fields: ClassVar[tuple[str, ...]] = ( User.id.field.name, User.username.field.name, User.email.field.name, User.role.field.name, User.first_name.field.name, User.last_name.field.name, User.is_active.field.name, ) class UserCreateIn(ModelSchema): role: UserRole = UserRole.VIEWER class Meta: model = User fields: ClassVar[tuple[str, ...]] = ( User.username.field.name, User.email.field.name, User.password.field.name, User.role.field.name, ) class UserUpdateIn(ModelSchema): email: str | None = None first_name: str | None = None last_name: str | None = None class Meta: model = User fields: ClassVar[tuple[str, ...]] = ( User.email.field.name, User.first_name.field.name, User.last_name.field.name, ) class UserRoleAssignIn(Schema): role: UserRole class UserListOut(Schema): count: int items: list[UserOut]