Translations for most of contract & templates
This commit is contained in:
@@ -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']
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user