Phasing out Pydantic v1's class Config
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user