56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
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]
|