From 7eb6f8f5e86bcfc7cbacc3609663647f53f00bcf Mon Sep 17 00:00:00 2001 From: Jasen Qin Date: Sat, 13 Jul 2024 10:27:54 +1000 Subject: [PATCH] autocommit 13-07-2024-10-27 --- py-kivy/poetry.lock | 2 +- py-kivy/pos_system/models.py | 34 +++++++++++++++++----------------- py-kivy/pyproject.toml | 1 + 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/py-kivy/poetry.lock b/py-kivy/poetry.lock index 37ae6c8..e0b54b0 100644 --- a/py-kivy/poetry.lock +++ b/py-kivy/poetry.lock @@ -2308,4 +2308,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "210871253d8b131828bd0a0fe119fcb8486fd5ffd0b10caafbdab7a8eb6533f3" +content-hash = "e206ba057f9668e090364cc695646a317f0896de3d81b60e05450b7498324d84" diff --git a/py-kivy/pos_system/models.py b/py-kivy/pos_system/models.py index 85a79a0..d1fc49a 100644 --- a/py-kivy/pos_system/models.py +++ b/py-kivy/pos_system/models.py @@ -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): diff --git a/py-kivy/pyproject.toml b/py-kivy/pyproject.toml index af97bfb..40897d1 100644 --- a/py-kivy/pyproject.toml +++ b/py-kivy/pyproject.toml @@ -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"