From 5bdb754f1c405711b1d560ad0a7ae20bf1444a25 Mon Sep 17 00:00:00 2001 From: ewandor Date: Wed, 16 Apr 2025 22:38:06 +0200 Subject: [PATCH] Switching foreign jkey to PydanticObjectId --- api/rpk-api/firm/contract/models.py | 7 ++++--- api/rpk-api/firm/core/depends.py | 2 +- api/rpk-api/firm/core/models.py | 9 +++++---- api/rpk-api/firm/entity/models.py | 4 ++-- api/rpk-api/firm/template/models.py | 7 ++++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/api/rpk-api/firm/contract/models.py b/api/rpk-api/firm/contract/models.py index 072f760..8fc05e7 100644 --- a/api/rpk-api/firm/contract/models.py +++ b/api/rpk-api/firm/contract/models.py @@ -3,6 +3,7 @@ from typing import List, Literal, Optional from enum import Enum from uuid import UUID +from beanie import PydanticObjectId from pydantic import BaseModel, Field from firm.core.models import CrudDocument, RichtextSingleline, RichtextMultiline, DictionaryEntry @@ -24,7 +25,7 @@ class ContractDraftStatus(str, Enum): class DraftParty(BaseModel): - entity_id: str = Field( + entity_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "entity", @@ -35,7 +36,7 @@ class DraftParty(BaseModel): title="Partie" ) part: str = Field(title="Rôle") - representative_id: str = Field( + representative_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "entity", @@ -73,7 +74,7 @@ class ProvisionGenuine(BaseModel): class ContractProvisionTemplateReference(BaseModel): type: Literal['template'] = ContractProvisionType.template - provision_template_id: str = Field( + provision_template_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "template/provision", diff --git a/api/rpk-api/firm/core/depends.py b/api/rpk-api/firm/core/depends.py index b33b3c4..6275bab 100644 --- a/api/rpk-api/firm/core/depends.py +++ b/api/rpk-api/firm/core/depends.py @@ -16,7 +16,7 @@ class Registry: def set_user(self, user): for firm in user.firms: - if firm.instance == self.instance and firm.firm == firm: + if firm.instance == self.instance and firm.firm == self.firm: self.user = user self.db.user = user return diff --git a/api/rpk-api/firm/core/models.py b/api/rpk-api/firm/core/models.py index e9c0bec..f1d9d88 100644 --- a/api/rpk-api/firm/core/models.py +++ b/api/rpk-api/firm/core/models.py @@ -9,9 +9,9 @@ from pydantic import BaseModel, Field, computed_field class CrudDocument(BaseModel): id: Optional[PydanticObjectId] = Field(default=None) created_at: datetime = Field(default=datetime.now(UTC), nullable=False, title="Créé le") - created_by: str = Field(nullable=False, title="Créé par") + created_by: Optional[PydanticObjectId] = Field(default=None, title="Créé par") updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC), nullable=False, title="Modifié le") - updated_by: str = Field(nullable=False, title="Modifié par") + updated_by: Optional[PydanticObjectId] = Field(default=None, title="Modifié par") @property def _id(self): @@ -37,7 +37,7 @@ class CrudDocument(BaseModel): @classmethod async def create(cls, db, create_schema): - model_dict = create_schema.model_dump() | {"created_by": db.user, "updated_by":db.user} + model_dict = create_schema.model_dump() | {"created_by": db.user.id, "updated_by": db.user.id} document = cls.model_validate(model_dict).model_dump(mode="json") result = await cls._get_collection(db).insert_one(document) @@ -66,8 +66,9 @@ class CrudDocument(BaseModel): @classmethod async def update(cls, db, model, update_schema): + model_dict = update_schema.model_dump(mode="json") | {"updated_by": db.user.id} update_query = { - "$set": {field: value for field, value in update_schema.model_dump(mode="json").items() if field!= "id" } + "$set": {field: value for field, value in model_dict.items() if field!= "id" } } await cls._get_collection(db).update_one({"_id": model.id}, update_query) diff --git a/api/rpk-api/firm/entity/models.py b/api/rpk-api/firm/entity/models.py index d6f7d48..7c43130 100644 --- a/api/rpk-api/firm/entity/models.py +++ b/api/rpk-api/firm/entity/models.py @@ -2,7 +2,7 @@ from datetime import date, datetime from typing import List, Literal, Optional from pydantic import Field, BaseModel -from beanie import Indexed +from beanie import Indexed, PydanticObjectId from firm.core.models import CrudDocument from firm.core.filter import Filter, FilterSchema @@ -39,7 +39,7 @@ class Individual(EntityType): class Employee(BaseModel): position: Indexed(str) = Field(title='Poste') - entity_id: str = Field( + entity_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "entity", diff --git a/api/rpk-api/firm/template/models.py b/api/rpk-api/firm/template/models.py index 8afe951..efe925a 100644 --- a/api/rpk-api/firm/template/models.py +++ b/api/rpk-api/firm/template/models.py @@ -1,6 +1,7 @@ from typing import List from html import unescape +from beanie import PydanticObjectId from pydantic import BaseModel, Field from firm.core.models import CrudDocument, RichtextMultiline, RichtextSingleline, DictionaryEntry @@ -8,7 +9,7 @@ from firm.core.filter import Filter, FilterSchema class PartyTemplate(BaseModel): - entity_id: str = Field( + entity_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "entity", @@ -19,7 +20,7 @@ class PartyTemplate(BaseModel): title="Partie" ) part: str = Field(title="Rôle") - representative_id: str = Field( + representative_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "entity", @@ -61,7 +62,7 @@ class ProvisionTemplate(CrudDocument): class ProvisionTemplateReference(BaseModel): - provision_template_id: str = Field( + provision_template_id: PydanticObjectId = Field( foreignKey={ "reference": { "resource": "template/provision",