Translations for most of contract & templates

This commit is contained in:
2023-03-12 19:12:35 +01:00
parent 868eea79bf
commit 427ea64f8d
5 changed files with 122 additions and 49 deletions

View File

@@ -30,9 +30,10 @@ class DraftParty(BaseModel):
"schema": "Entity", "schema": "Entity",
} }
}, },
default="" default="",
title="Partie"
) )
part: str part: str = Field(title="Rôle")
representative_id: str = Field( representative_id: str = Field(
foreignKey={ foreignKey={
"reference": { "reference": {
@@ -40,13 +41,12 @@ class DraftParty(BaseModel):
"schema": "Entity", "schema": "Entity",
} }
}, },
default="" default="",
title="Représentant"
) )
class Config:
class Signature(BaseModel): title = 'Partie'
uuid: str
affixed: bool
class Party(BaseModel): class Party(BaseModel):
@@ -60,8 +60,11 @@ class Party(BaseModel):
class ProvisionGenuine(BaseModel): class ProvisionGenuine(BaseModel):
type: Literal['genuine'] = 'genuine' type: Literal['genuine'] = 'genuine'
title: str = RichtextSingleline(props={"parametrized": True}, default="") title: str = RichtextSingleline(props={"parametrized": True}, default="", title="Titre")
body: str = RichtextMultiline(props={"parametrized": True}, default="") body: str = RichtextMultiline(props={"parametrized": True}, default="", title="Corps")
class Config:
title = 'Clause personalisée'
class ContractProvisionTemplateReference(BaseModel): class ContractProvisionTemplateReference(BaseModel):
@@ -75,32 +78,45 @@ class ContractProvisionTemplateReference(BaseModel):
}, },
}, },
props={"parametrized": True}, props={"parametrized": True},
default="" default="",
title="Template de clause"
) )
class Config:
title = 'Template de clause'
class DraftProvision(BaseModel): class DraftProvision(BaseModel):
provision: ContractProvisionTemplateReference | ProvisionGenuine = Field(..., discriminator='type') provision: ContractProvisionTemplateReference | ProvisionGenuine = Field(..., discriminator='type')
class Config:
title = 'Provision'
class Provision(BaseModel): class Provision(BaseModel):
title: str = RichtextSingleline() title: str = RichtextSingleline(title="Titre")
body: str = RichtextMultiline() body: str = RichtextMultiline(title="Corps")
class ContractDraft(CrudDocument): class ContractDraft(CrudDocument):
name: str """
title: str Brouillon de contrat à remplir
parties: List[DraftParty] """
name: str = Field(title="Nom")
title: str = Field(title="Titre")
parties: List[DraftParty] = Field(title="Parties")
provisions: List[DraftProvision] = Field( provisions: List[DraftProvision] = Field(
props={"items-per-row": "1", "numbered": True} props={"items-per-row": "1", "numbered": True},
title='Clauses'
) )
variables: List[DictionaryEntry] = Field( variables: List[DictionaryEntry] = Field(
default=[], default=[],
format="dictionary", format="dictionary",
title='Variables'
) )
status: ContractDraftStatus = ContractDraftStatus.in_progress status: ContractDraftStatus = Field(default=ContractDraftStatus.in_progress, title="Statut")
todo: List[str] = [] todo: List[str] = Field(default=[], title="Reste à faire")
class Settings(CrudDocument.Settings): class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title'] fulltext_search = ['name', 'title']
@@ -111,6 +127,9 @@ class ContractDraft(CrudDocument):
hour=0, minute=0, second=0) hour=0, minute=0, second=0)
} }
class Config:
title = 'Brouillon de contrat'
async def check_is_ready(self): async def check_is_ready(self):
if self.status == ContractDraftStatus.published: if self.status == ContractDraftStatus.published:
return return
@@ -147,16 +166,17 @@ class ContractDraft(CrudDocument):
class Contract(CrudDocument): class Contract(CrudDocument):
name: str name: str = Field(title="Nom")
title: str title: str = Field(title="Titre")
parties: List[Party] parties: List[Party] = Field(title="Parties")
provisions: List[Provision] = Field( provisions: List[Provision] = Field(
props={"items-per-row": "1", "numbered": True} props={"items-per-row": "1", "numbered": True},
title='Clauses'
) )
status: ContractStatus = ContractStatus.published status: ContractStatus = Field(default=ContractStatus.published, title="Statut")
lawyer: Entity lawyer: Entity = Field(title="Avocat en charge")
location: str location: str = Field(title="Lieu")
date: datetime.date date: datetime.date = Field(title="Date")
class Settings(CrudDocument.Settings): class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title'] fulltext_search = ['name', 'title']

View File

@@ -39,18 +39,27 @@ class ContractDraftUpdate(ContractDraftCreate):
class ForeignEntityRead(BaseModel): class ForeignEntityRead(BaseModel):
label: str label: str
class Config:
title = "Avocat"
class PartyRead(BaseModel): class PartyRead(BaseModel):
signature_affixed: bool signature_affixed: bool = Field(title='Signature apposée?')
signature_uuid: str = Field(format="signature-link") signature_uuid: str = Field(format="signature-link", title="Lien vers signature")
part: str part: str = Field(title='Rôle')
entity: ForeignEntityRead entity: ForeignEntityRead = Field(title='Client')
class Config:
title = "Partie"
class ContractRead(Contract): class ContractRead(Contract):
parties: List[PartyRead] parties: List[PartyRead]
lawyer: ForeignEntityRead lawyer: ForeignEntityRead
class Config:
title = "Contrat"
class ContractCreate(Writer): class ContractCreate(Writer):
date: datetime.date date: datetime.date

View File

@@ -34,6 +34,9 @@ class Individual(EntityType):
return '{} {}'.format(self.firstname, self.lastname) return '{} {}'.format(self.firstname, self.lastname)
class Config:
title = 'Particulier'
class Employee(BaseModel): class Employee(BaseModel):
role: Indexed(str) = Field(title='Poste') role: Indexed(str) = Field(title='Poste')
@@ -57,10 +60,16 @@ class Corporation(EntityType):
activity: Indexed(str) = Field(title='Activité') activity: Indexed(str) = Field(title='Activité')
employees: List[Employee] = Field(default=[], title='Employés') employees: List[Employee] = Field(default=[], title='Employés')
class Config:
title = 'Entreprise'
class Institution(Corporation): class Institution(Corporation):
type: Literal['institution'] = 'institution' type: Literal['institution'] = 'institution'
class Config:
title = 'Institution'
class Entity(CrudDocument): class Entity(CrudDocument):
""" """

View File

@@ -14,9 +14,10 @@ class PartyTemplate(BaseModel):
"schema": "Entity", "schema": "Entity",
} }
}, },
default="" default="",
title="Partie"
) )
part: str part: str = Field(title="Rôle")
representative_id: str = Field( representative_id: str = Field(
foreignKey={ foreignKey={
"reference": { "reference": {
@@ -24,9 +25,13 @@ class PartyTemplate(BaseModel):
"schema": "Entity", "schema": "Entity",
} }
}, },
default="" default="",
title="Représentant"
) )
class Config:
title = 'Partie'
def remove_html_tags(text): def remove_html_tags(text):
"""Remove html tags from a string""" """Remove html tags from a string"""
@@ -36,10 +41,14 @@ def remove_html_tags(text):
class ProvisionTemplate(CrudDocument): class ProvisionTemplate(CrudDocument):
name: str """
title: str = RichtextSingleline() Modèle de clause à décliner
"""
name: str = Field(title="Nom")
title: str = RichtextSingleline(title="Titre")
label: str = "" label: str = ""
body: str = RichtextMultiline() body: str = RichtextMultiline(title="Corps")
@validator("label", always=True) @validator("label", always=True)
def generate_label(cls, v, values, **kwargs): def generate_label(cls, v, values, **kwargs):
@@ -48,6 +57,9 @@ class ProvisionTemplate(CrudDocument):
class Settings(CrudDocument.Settings): class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title', 'body'] fulltext_search = ['name', 'title', 'body']
class Config:
title = 'Template de clause'
class ProvisionTemplateReference(BaseModel): class ProvisionTemplateReference(BaseModel):
provision_template_id: str = Field( provision_template_id: str = Field(
@@ -58,22 +70,31 @@ class ProvisionTemplateReference(BaseModel):
"displayedFields": ['title', 'body'] "displayedFields": ['title', 'body']
}, },
}, },
props={"parametrized": True} props={"parametrized": True},
title="Template de clause"
) )
class Config:
title = 'Clause'
class ContractTemplate(CrudDocument): class ContractTemplate(CrudDocument):
name: str """
title: str Modèle de contrat à décliner
"""
name: str = Field(title="Nom")
title: str = Field(title="Titre")
label: str = "" label: str = ""
parties: List[PartyTemplate] = [] parties: List[PartyTemplate] = Field(default=[], title="Parties")
provisions: List[ProvisionTemplateReference] = Field( provisions: List[ProvisionTemplateReference] = Field(
default=[], default=[],
props={"items-per-row": "1", "numbered": True} props={"items-per-row": "1", "numbered": True},
title="Clauses"
) )
variables: List[DictionaryEntry] = Field( variables: List[DictionaryEntry] = Field(
default=[], default=[],
format="dictionary", format="dictionary",
title="Variables"
) )
@validator("label", always=True) @validator("label", always=True)
@@ -82,3 +103,6 @@ class ContractTemplate(CrudDocument):
class Settings(CrudDocument.Settings): class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title'] fulltext_search = ['name', 'title']
class Config:
title = 'Template de contrat'

View File

@@ -11,15 +11,23 @@ class ContractTemplateRead(ContractTemplate):
class ContractTemplateCreate(Writer): class ContractTemplateCreate(Writer):
name: str name: str = Field(title="Nom")
title: str title: str = Field(title="Titre")
parties: List[PartyTemplate] = [] parties: List[PartyTemplate] = Field(default=[], title="Parties")
provisions: List[ProvisionTemplateReference] = Field(
default=[],
props={"items-per-row": "1", "numbered": True},
title="Clauses"
)
variables: List[DictionaryEntry] = Field( variables: List[DictionaryEntry] = Field(
default=[], default=[],
format="dictionary", format="dictionary",
props={"required": False} props={"required": False},
title="Variables"
) )
provisions: List[ProvisionTemplateReference] = []
class Config:
title = 'Template de Contrat'
class ContractTemplateUpdate(ContractTemplateCreate): class ContractTemplateUpdate(ContractTemplateCreate):
@@ -31,9 +39,12 @@ class ProvisionTemplateRead(ProvisionTemplate):
class ProvisionTemplateCreate(Writer): class ProvisionTemplateCreate(Writer):
name: str name: str = Field(title="Nom")
title: str = RichtextSingleline() title: str = RichtextSingleline(title="Titre")
body: str = RichtextMultiline() body: str = RichtextMultiline(title="Corps")
class Config:
title = 'Template de Clause'
class ProvisionTemplateUpdate(ProvisionTemplateCreate): class ProvisionTemplateUpdate(ProvisionTemplateCreate):