from datetime import datetime from typing import Optional from pydantic import BaseModel, EmailStr class UserCreate(BaseModel): email: EmailStr password: str display_name: Optional[str] = None class UserUpdate(BaseModel): display_name: Optional[str] = None timezone: Optional[str] = None class PasswordChange(BaseModel): current_password: str new_password: str class UserResponse(BaseModel): id: int email: str display_name: Optional[str] timezone: str is_admin: bool created_at: datetime model_config = {"from_attributes": True} class Token(BaseModel): access_token: str token_type: str = "bearer" class LoginRequest(BaseModel): email: EmailStr password: str class AdminUserCreate(BaseModel): email: EmailStr password: str display_name: Optional[str] = None class AdminPasswordReset(BaseModel): new_password: str class AdminUserResponse(BaseModel): id: int email: str display_name: Optional[str] timezone: str is_admin: bool is_disabled: bool created_at: datetime model_config = {"from_attributes": True}