46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
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
|