Phasing out Pydantic v1's class Config
This commit is contained in:
@@ -4,7 +4,7 @@ from enum import Enum
|
||||
from uuid import UUID
|
||||
|
||||
from beanie import PydanticObjectId
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from pydantic.json_schema import SkipJsonSchema
|
||||
|
||||
from firm.core.models import CrudDocument, RichtextSingleline, RichtextMultiline, DictionaryEntry, ForeignKey
|
||||
@@ -27,13 +27,13 @@ class ContractDraftStatus(str, Enum):
|
||||
|
||||
|
||||
class DraftParty(BaseModel):
|
||||
model_config = ConfigDict(title='Partie')
|
||||
|
||||
entity_id: Optional[PydanticObjectId] = ForeignKey("entities", "Entity", default=None, title="Partie")
|
||||
part: str = Field(title="Rôle")
|
||||
representative_id: Optional[PydanticObjectId] = ForeignKey("entities", "Entity", default=None, title="Représentant")
|
||||
|
||||
entity: SkipJsonSchema[Entity] = Field(default=None, exclude=True, )
|
||||
class Config:
|
||||
title = 'Partie'
|
||||
|
||||
|
||||
class Party(BaseModel):
|
||||
@@ -49,15 +49,16 @@ class ContractProvisionType(Enum):
|
||||
template = 'template'
|
||||
|
||||
class ProvisionGenuine(BaseModel):
|
||||
model_config = ConfigDict(title='Clause personalisée')
|
||||
|
||||
type: Literal['genuine'] = ContractProvisionType.genuine
|
||||
title: str = RichtextSingleline(props={"parametrized": True}, default="", title="Titre")
|
||||
body: str = RichtextMultiline(props={"parametrized": True}, default="", title="Corps")
|
||||
|
||||
class Config:
|
||||
title = 'Clause personalisée'
|
||||
|
||||
|
||||
class ContractProvisionTemplateReference(BaseModel):
|
||||
model_config = ConfigDict(title='Template de clause')
|
||||
|
||||
type: Literal['template'] = ContractProvisionType.template
|
||||
provision_template_id: PydanticObjectId = ForeignKey(
|
||||
"templates/provisions",
|
||||
@@ -68,15 +69,11 @@ class ContractProvisionTemplateReference(BaseModel):
|
||||
title="Template de clause"
|
||||
)
|
||||
|
||||
class Config:
|
||||
title = 'Template de clause'
|
||||
|
||||
|
||||
class DraftProvision(BaseModel):
|
||||
provision: ContractProvisionTemplateReference | ProvisionGenuine = Field(..., discriminator='type')
|
||||
model_config = ConfigDict(title='Clause')
|
||||
|
||||
class Config:
|
||||
title = 'Clause'
|
||||
provision: ContractProvisionTemplateReference | ProvisionGenuine = Field(..., discriminator='type')
|
||||
|
||||
|
||||
class Provision(BaseModel):
|
||||
@@ -91,6 +88,7 @@ class ContractDraft(CrudDocument):
|
||||
"""
|
||||
Brouillon de contrat à remplir
|
||||
"""
|
||||
model_config = ConfigDict(title='Brouillon de contrat')
|
||||
|
||||
name: str = Field(title="Nom")
|
||||
title: str = Field(title="Titre")
|
||||
@@ -109,9 +107,6 @@ class ContractDraft(CrudDocument):
|
||||
hour=0, minute=0, second=0)
|
||||
}
|
||||
|
||||
class Config:
|
||||
title = 'Brouillon de contrat'
|
||||
|
||||
async def check_is_ready(self, db):
|
||||
if self.status == ContractDraftStatus.published:
|
||||
return
|
||||
|
||||
@@ -2,7 +2,7 @@ import datetime
|
||||
from typing import List
|
||||
|
||||
from beanie import PydanticObjectId
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
|
||||
from firm.contract.models import ContractDraft, DraftProvision, DraftParty, Contract
|
||||
|
||||
@@ -42,32 +42,29 @@ class ContractDraftUpdate(ContractDraftCreate):
|
||||
|
||||
|
||||
class ForeignEntityRead(BaseModel):
|
||||
label: str
|
||||
model_config = ConfigDict(title='Avocat')
|
||||
|
||||
class Config:
|
||||
title = "Avocat"
|
||||
label: str
|
||||
|
||||
|
||||
class PartyRead(BaseModel):
|
||||
model_config = ConfigDict(title='Partie')
|
||||
|
||||
signature_affixed: bool = Field(title='Signature apposée?')
|
||||
signature_uuid: str = Field(props={"display": "signature-link"}, title="Lien vers signature")
|
||||
part: str = Field(title='Rôle')
|
||||
entity: ForeignEntityRead = Field(title='Client')
|
||||
|
||||
class Config:
|
||||
title = "Partie"
|
||||
|
||||
|
||||
class ContractRead(Reader, Contract):
|
||||
model_config = ConfigDict(title='Contrat')
|
||||
|
||||
parties: List[PartyRead] = Field(
|
||||
props={"items_per_row": "2"},
|
||||
title='Parties'
|
||||
)
|
||||
lawyer: ForeignEntityRead
|
||||
|
||||
class Config:
|
||||
title = "Contrat"
|
||||
|
||||
|
||||
class ContractCreate(Writer):
|
||||
date: datetime.date
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -2,20 +2,19 @@ from typing import List, Optional
|
||||
from html import unescape
|
||||
|
||||
from beanie import PydanticObjectId
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
|
||||
from firm.core.models import CrudDocument, RichtextMultiline, RichtextSingleline, DictionaryEntry, ForeignKey
|
||||
from firm.core.filter import Filter, FilterSchema
|
||||
|
||||
|
||||
class PartyTemplate(BaseModel):
|
||||
model_config = ConfigDict(title="Partie")
|
||||
|
||||
entity_id: Optional[PydanticObjectId] = ForeignKey("entities", "Entity", default=None, title="Partie")
|
||||
part: str = Field(title="Rôle")
|
||||
representative_id: Optional[PydanticObjectId] = ForeignKey("entities", "Entity", default=None, title="Représentant")
|
||||
|
||||
class Config:
|
||||
title = 'Partie'
|
||||
|
||||
|
||||
def remove_html_tags(text):
|
||||
"""Remove html tags from a string"""
|
||||
@@ -28,6 +27,7 @@ class ProvisionTemplate(CrudDocument):
|
||||
"""
|
||||
Modèle de clause à décliner
|
||||
"""
|
||||
model_config = ConfigDict(title="Template de clause")
|
||||
|
||||
name: str = Field(title="Nom")
|
||||
title: str = RichtextSingleline(title="Titre")
|
||||
@@ -39,11 +39,10 @@ class ProvisionTemplate(CrudDocument):
|
||||
class Settings(CrudDocument.Settings):
|
||||
fulltext_search = ['name', 'title', 'body']
|
||||
|
||||
class Config:
|
||||
title = 'Template de clause'
|
||||
|
||||
|
||||
class ProvisionTemplateReference(BaseModel):
|
||||
model_config = ConfigDict(title="Clause")
|
||||
|
||||
provision_template_id: PydanticObjectId = ForeignKey(
|
||||
"templates/provisions",
|
||||
"TemplateProvision",
|
||||
@@ -52,14 +51,13 @@ class ProvisionTemplateReference(BaseModel):
|
||||
title="Template de clause"
|
||||
)
|
||||
|
||||
class Config:
|
||||
title = 'Clause'
|
||||
|
||||
|
||||
class ContractTemplate(CrudDocument):
|
||||
"""
|
||||
Modèle de contrat à décliner
|
||||
"""
|
||||
model_config = ConfigDict(title="Template de contrat")
|
||||
|
||||
name: str = Field(title="Nom")
|
||||
title: str = Field(title="Titre")
|
||||
parties: List[PartyTemplate] = Field(default=[], title="Parties")
|
||||
@@ -72,9 +70,6 @@ class ContractTemplate(CrudDocument):
|
||||
class Settings(CrudDocument.Settings):
|
||||
fulltext_search = ['name', 'title']
|
||||
|
||||
class Config:
|
||||
title = 'Template de contrat'
|
||||
|
||||
|
||||
class ContractTemplateFilters(FilterSchema):
|
||||
class Constants(Filter.Constants):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from pydantic import Field
|
||||
from pydantic import Field, ConfigDict
|
||||
from typing import List
|
||||
|
||||
from firm.template.models import ContractTemplate, ProvisionTemplate, PartyTemplate, ProvisionTemplateReference, DictionaryEntry
|
||||
@@ -11,6 +11,8 @@ class ContractTemplateRead(Reader, ContractTemplate):
|
||||
|
||||
|
||||
class ContractTemplateCreate(Writer):
|
||||
model_config = ConfigDict(title="Template de Contrat")
|
||||
|
||||
name: str = Field(title="Nom")
|
||||
title: str = Field(title="Titre")
|
||||
parties: List[PartyTemplate] = Field(
|
||||
@@ -28,9 +30,6 @@ class ContractTemplateCreate(Writer):
|
||||
title="Variables"
|
||||
)
|
||||
|
||||
class Config:
|
||||
title = 'Template de Contrat'
|
||||
|
||||
|
||||
class ContractTemplateUpdate(ContractTemplateCreate):
|
||||
pass
|
||||
@@ -41,13 +40,12 @@ class ProvisionTemplateRead(Reader, ProvisionTemplate):
|
||||
|
||||
|
||||
class ProvisionTemplateCreate(Writer):
|
||||
model_config = ConfigDict(title="Template de Clause")
|
||||
|
||||
name: str = Field(title="Nom")
|
||||
title: str = RichtextSingleline(title="Titre")
|
||||
body: str = RichtextMultiline(title="Corps")
|
||||
|
||||
class Config:
|
||||
title = 'Template de Clause'
|
||||
|
||||
|
||||
class ProvisionTemplateUpdate(ProvisionTemplateCreate):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user