Phasing out Pydantic v1's class Config

This commit is contained in:
2025-05-03 22:28:41 +02:00
parent 90a46ada2d
commit a9e9f97c14
7 changed files with 45 additions and 66 deletions

View File

@@ -1,7 +1,7 @@
from datetime import date, datetime
from typing import List, Literal, Optional
from pydantic import Field, BaseModel
from pydantic import Field, BaseModel, ConfigDict
from beanie import Indexed, PydanticObjectId
from firm.core.models import CrudDocument, ForeignKey
@@ -15,6 +15,8 @@ class EntityType(BaseModel):
class Individual(EntityType):
model_config = ConfigDict(title='Particulier')
type: Literal['individual'] = 'individual'
firstname: Indexed(str) = Field(title='Prénom')
middlename: Indexed(str) = Field(default="", title='Autres prénoms')
@@ -33,39 +35,35 @@ class Individual(EntityType):
# return '{} "{}" {}'.format(self.firstname, self.surnames[0], self.lastname)
return f"{self.firstname} {self.lastname}"
class Config:
title = 'Particulier'
class Employee(BaseModel):
model_config = ConfigDict(title='Fiche Employé')
position: Indexed(str) = Field(title='Poste')
entity_id: PydanticObjectId = ForeignKey("entities", "Entity", title='Employé')
class Config:
title = 'Fiche Employé'
class Corporation(EntityType):
model_config = ConfigDict(title='Entreprise')
type: Literal['corporation'] = 'corporation'
title: Indexed(str) = Field(title='Dénomination sociale')
activity: Indexed(str) = Field(title='Activité')
employees: List[Employee] = Field(default=[], title='Employés')
class Config:
title = 'Entreprise'
class Institution(Corporation):
type: Literal['institution'] = 'institution'
model_config = ConfigDict(title='Institution')
class Config:
title = 'Institution'
type: Literal['institution'] = 'institution'
class Entity(CrudDocument):
"""
Fiche d'un client
"""
model_config = ConfigDict(title='Client')
entity_data: Individual | Corporation | Institution = Field(..., discriminator='type')
address: str = Field(default="", title='Adresse')
@@ -83,9 +81,6 @@ class Entity(CrudDocument):
hour=0, minute=0, second=0)
}
class Config:
title = 'Client'
class EntityFilters(FilterSchema):
class Constants(Filter.Constants):

View File

@@ -1,4 +1,4 @@
from pydantic import Field
from pydantic import Field, ConfigDict
from firm.entity.models import Entity, Institution, Individual, Corporation
from firm.core.schemas import Writer, Reader
@@ -7,12 +7,11 @@ class EntityRead(Reader, Entity):
pass
class EntityCreate(Writer):
model_config = ConfigDict(title="Création d'un client")
entity_data: Individual | Corporation | Institution = Field(..., discriminator='type')
address: str = Field(default="", title='Adresse')
class Config:
title = "Création d'un client"
class EntityIndividualCreate(EntityCreate):
entity_data: Individual