Spaces:
Sleeping
Sleeping
| from datetime import datetime | |
| from passlib.context import CryptContext | |
| from pydantic import field_validator, Field, EmailStr | |
| from trauma.api.account.dto import AccountType | |
| from trauma.core.database import MongoBaseModel | |
| class AccountModel(MongoBaseModel): | |
| email: EmailStr | |
| password: str | None = Field(exclude=True, default=None) | |
| role: str | None = None | |
| accountType: AccountType = AccountType.User | |
| datetimeInserted: datetime = Field(default_factory=datetime.now) | |
| datetimeUpdated: datetime = Field(default_factory=datetime.now) | |
| def validate_datetimeUpdated(cls, v): | |
| return v or datetime.now() | |
| def set_password_hash(cls, v): | |
| if not v.startswith("$2b$"): | |
| return CryptContext(schemes=["bcrypt"], deprecated="auto").hash(v) | |
| return v | |
| class Config: | |
| arbitrary_types_allowed = True | |
| json_encoders = { | |
| datetime: lambda dt: dt.isoformat() | |
| } | |