Spaces:
Sleeping
Sleeping
File size: 1,121 Bytes
c6cc0f2 faa9d54 c6cc0f2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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)
@field_validator("datetimeUpdated", mode="before", check_fields=False)
@classmethod
def validate_datetimeUpdated(cls, v):
return v or datetime.now()
@field_validator('password', mode='before', check_fields=False)
@classmethod
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()
}
|