Switching foreign jkey to PydanticObjectId
This commit is contained in:
@@ -3,6 +3,7 @@ from typing import List, Literal, Optional
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
from beanie import PydanticObjectId
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from firm.core.models import CrudDocument, RichtextSingleline, RichtextMultiline, DictionaryEntry
|
from firm.core.models import CrudDocument, RichtextSingleline, RichtextMultiline, DictionaryEntry
|
||||||
@@ -24,7 +25,7 @@ class ContractDraftStatus(str, Enum):
|
|||||||
|
|
||||||
|
|
||||||
class DraftParty(BaseModel):
|
class DraftParty(BaseModel):
|
||||||
entity_id: str = Field(
|
entity_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "entity",
|
"resource": "entity",
|
||||||
@@ -35,7 +36,7 @@ class DraftParty(BaseModel):
|
|||||||
title="Partie"
|
title="Partie"
|
||||||
)
|
)
|
||||||
part: str = Field(title="Rôle")
|
part: str = Field(title="Rôle")
|
||||||
representative_id: str = Field(
|
representative_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "entity",
|
"resource": "entity",
|
||||||
@@ -73,7 +74,7 @@ class ProvisionGenuine(BaseModel):
|
|||||||
|
|
||||||
class ContractProvisionTemplateReference(BaseModel):
|
class ContractProvisionTemplateReference(BaseModel):
|
||||||
type: Literal['template'] = ContractProvisionType.template
|
type: Literal['template'] = ContractProvisionType.template
|
||||||
provision_template_id: str = Field(
|
provision_template_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "template/provision",
|
"resource": "template/provision",
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Registry:
|
|||||||
|
|
||||||
def set_user(self, user):
|
def set_user(self, user):
|
||||||
for firm in user.firms:
|
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.user = user
|
||||||
self.db.user = user
|
self.db.user = user
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ from pydantic import BaseModel, Field, computed_field
|
|||||||
class CrudDocument(BaseModel):
|
class CrudDocument(BaseModel):
|
||||||
id: Optional[PydanticObjectId] = Field(default=None)
|
id: Optional[PydanticObjectId] = Field(default=None)
|
||||||
created_at: datetime = Field(default=datetime.now(UTC), nullable=False, title="Créé le")
|
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_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
|
@property
|
||||||
def _id(self):
|
def _id(self):
|
||||||
@@ -37,7 +37,7 @@ class CrudDocument(BaseModel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create(cls, db, create_schema):
|
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")
|
document = cls.model_validate(model_dict).model_dump(mode="json")
|
||||||
result = await cls._get_collection(db).insert_one(document)
|
result = await cls._get_collection(db).insert_one(document)
|
||||||
|
|
||||||
@@ -66,8 +66,9 @@ class CrudDocument(BaseModel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def update(cls, db, model, update_schema):
|
async def update(cls, db, model, update_schema):
|
||||||
|
model_dict = update_schema.model_dump(mode="json") | {"updated_by": db.user.id}
|
||||||
update_query = {
|
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)
|
await cls._get_collection(db).update_one({"_id": model.id}, update_query)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from datetime import date, datetime
|
|||||||
from typing import List, Literal, Optional
|
from typing import List, Literal, Optional
|
||||||
|
|
||||||
from pydantic import Field, BaseModel
|
from pydantic import Field, BaseModel
|
||||||
from beanie import Indexed
|
from beanie import Indexed, PydanticObjectId
|
||||||
|
|
||||||
from firm.core.models import CrudDocument
|
from firm.core.models import CrudDocument
|
||||||
from firm.core.filter import Filter, FilterSchema
|
from firm.core.filter import Filter, FilterSchema
|
||||||
@@ -39,7 +39,7 @@ class Individual(EntityType):
|
|||||||
|
|
||||||
class Employee(BaseModel):
|
class Employee(BaseModel):
|
||||||
position: Indexed(str) = Field(title='Poste')
|
position: Indexed(str) = Field(title='Poste')
|
||||||
entity_id: str = Field(
|
entity_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "entity",
|
"resource": "entity",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
from html import unescape
|
from html import unescape
|
||||||
|
|
||||||
|
from beanie import PydanticObjectId
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from firm.core.models import CrudDocument, RichtextMultiline, RichtextSingleline, DictionaryEntry
|
from firm.core.models import CrudDocument, RichtextMultiline, RichtextSingleline, DictionaryEntry
|
||||||
@@ -8,7 +9,7 @@ from firm.core.filter import Filter, FilterSchema
|
|||||||
|
|
||||||
|
|
||||||
class PartyTemplate(BaseModel):
|
class PartyTemplate(BaseModel):
|
||||||
entity_id: str = Field(
|
entity_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "entity",
|
"resource": "entity",
|
||||||
@@ -19,7 +20,7 @@ class PartyTemplate(BaseModel):
|
|||||||
title="Partie"
|
title="Partie"
|
||||||
)
|
)
|
||||||
part: str = Field(title="Rôle")
|
part: str = Field(title="Rôle")
|
||||||
representative_id: str = Field(
|
representative_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "entity",
|
"resource": "entity",
|
||||||
@@ -61,7 +62,7 @@ class ProvisionTemplate(CrudDocument):
|
|||||||
|
|
||||||
|
|
||||||
class ProvisionTemplateReference(BaseModel):
|
class ProvisionTemplateReference(BaseModel):
|
||||||
provision_template_id: str = Field(
|
provision_template_id: PydanticObjectId = Field(
|
||||||
foreignKey={
|
foreignKey={
|
||||||
"reference": {
|
"reference": {
|
||||||
"resource": "template/provision",
|
"resource": "template/provision",
|
||||||
|
|||||||
Reference in New Issue
Block a user