from datetime import datetime, time, timedelta from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union class UserBase(BaseModel): #id_random: str = None # This should not be None. It is required. account_id_random: str = None # This should not be None. It is required. username: str = Field(None, example='New.User', min_length=3, max_length=100) name: Optional[str] = None email: EmailStr email_verified: Optional[bool] = None enable: Optional[bool] = None enable_from: Optional[datetime] = None enable_to: Optional[datetime] = None super: Optional[bool] = None manager: Optional[bool] = None administrator: Optional[bool] = None verified: Optional[bool] = None notes: Optional[str] = None class UserIn(UserBase): #id_random: str = None password: str = Field(None, example='My Difficult Password!', min_length=10) class UserOut(UserBase): id_random: str = None password_set_on: Optional[datetime] = None password_reset_token: Optional[str] = None password_reset_expire_on: Optional[datetime] = None logged_in_on: Optional[datetime] = None last_activity_on: Optional[datetime] = None created_on: datetime update_on: Optional[datetime] = None class UserInDB(UserBase): hashed_password: str password_set_on: Optional[datetime] = None password_reset_token: Optional[str] = None password_reset_expire_on: Optional[datetime] = None logged_in_on: Optional[datetime] = None last_activity_on: Optional[datetime] = None