autocommit 13-07-2024-10-27
This commit is contained in:
parent
2709da5594
commit
7eb6f8f5e8
|
|
@ -2308,4 +2308,4 @@ files = [
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.12"
|
||||
content-hash = "210871253d8b131828bd0a0fe119fcb8486fd5ffd0b10caafbdab7a8eb6533f3"
|
||||
content-hash = "e206ba057f9668e090364cc695646a317f0896de3d81b60e05450b7498324d84"
|
||||
|
|
|
|||
|
|
@ -2,31 +2,31 @@ from pydantic import BaseModel, Field, EmailStr, validator
|
|||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
from bson import ObjectId
|
||||
from pydantic import ConfigDict
|
||||
from typing import Any, ClassVar
|
||||
|
||||
|
||||
class PyObjectId(ObjectId):
|
||||
@classmethod
|
||||
def __get_validators__(cls):
|
||||
yield cls.validate
|
||||
|
||||
@classmethod
|
||||
def validate(cls, v):
|
||||
if not ObjectId.is_valid(v):
|
||||
raise ValueError("Invalid objectid")
|
||||
return ObjectId(v)
|
||||
|
||||
@classmethod
|
||||
def __modify_schema__(cls, field_schema):
|
||||
field_schema.update(type="string")
|
||||
def __get_pydantic_core_schema__(
|
||||
cls, _source_type: Any, _handler: Any
|
||||
) -> Any:
|
||||
from pydantic_core import core_schema
|
||||
return core_schema.json_or_python_schema(
|
||||
python_schema=core_schema.is_instance_schema(ObjectId),
|
||||
json_schema=core_schema.StringSchema(),
|
||||
serialization=core_schema.to_string_ser_schema(),
|
||||
)
|
||||
|
||||
|
||||
class MongoBaseModel(BaseModel):
|
||||
id: Optional[PyObjectId] = Field(default_factory=PyObjectId, alias="_id")
|
||||
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
|
||||
|
||||
class Config:
|
||||
allow_population_by_field_name = True
|
||||
arbitrary_types_allowed = True
|
||||
json_encoders = {ObjectId: str}
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
arbitrary_types_allowed=True,
|
||||
json_encoders={ObjectId: str}
|
||||
)
|
||||
|
||||
|
||||
class Item(MongoBaseModel):
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ pytest = "^8.2.2"
|
|||
python-jose = "^3.3.0"
|
||||
passlib = "^1.7.4"
|
||||
|
||||
pydantic = "^2.8.2"
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
ipykernel = "^6.29.5"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue