Switching foreign jkey to PydanticObjectId

This commit is contained in:
2025-04-16 22:38:06 +02:00
parent 15b77ff09f
commit 5bdb754f1c
5 changed files with 16 additions and 13 deletions

View File

@@ -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",

View File

@@ -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

View File

@@ -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)

View File

@@ -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",

View File

@@ -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",