diff --git a/back/app/contract/models.py b/back/app/contract/models.py index c1ad2605..29f29dff 100644 --- a/back/app/contract/models.py +++ b/back/app/contract/models.py @@ -30,9 +30,10 @@ class DraftParty(BaseModel): "schema": "Entity", } }, - default="" + default="", + title="Partie" ) - part: str + part: str = Field(title="Rôle") representative_id: str = Field( foreignKey={ "reference": { @@ -40,13 +41,12 @@ class DraftParty(BaseModel): "schema": "Entity", } }, - default="" + default="", + title="Représentant" ) - -class Signature(BaseModel): - uuid: str - affixed: bool + class Config: + title = 'Partie' class Party(BaseModel): @@ -60,8 +60,11 @@ class Party(BaseModel): class ProvisionGenuine(BaseModel): type: Literal['genuine'] = 'genuine' - title: str = RichtextSingleline(props={"parametrized": True}, default="") - body: str = RichtextMultiline(props={"parametrized": True}, default="") + 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): @@ -75,32 +78,45 @@ class ContractProvisionTemplateReference(BaseModel): }, }, props={"parametrized": True}, - default="" + default="", + title="Template de clause" ) + class Config: + title = 'Template de clause' + class DraftProvision(BaseModel): provision: ContractProvisionTemplateReference | ProvisionGenuine = Field(..., discriminator='type') + class Config: + title = 'Provision' + class Provision(BaseModel): - title: str = RichtextSingleline() - body: str = RichtextMultiline() + title: str = RichtextSingleline(title="Titre") + body: str = RichtextMultiline(title="Corps") class ContractDraft(CrudDocument): - name: str - title: str - parties: List[DraftParty] + """ + Brouillon de contrat à remplir + """ + + name: str = Field(title="Nom") + title: str = Field(title="Titre") + parties: List[DraftParty] = Field(title="Parties") provisions: List[DraftProvision] = Field( - props={"items-per-row": "1", "numbered": True} + props={"items-per-row": "1", "numbered": True}, + title='Clauses' ) variables: List[DictionaryEntry] = Field( default=[], format="dictionary", + title='Variables' ) - status: ContractDraftStatus = ContractDraftStatus.in_progress - todo: List[str] = [] + status: ContractDraftStatus = Field(default=ContractDraftStatus.in_progress, title="Statut") + todo: List[str] = Field(default=[], title="Reste à faire") class Settings(CrudDocument.Settings): fulltext_search = ['name', 'title'] @@ -111,6 +127,9 @@ class ContractDraft(CrudDocument): hour=0, minute=0, second=0) } + class Config: + title = 'Brouillon de contrat' + async def check_is_ready(self): if self.status == ContractDraftStatus.published: return @@ -147,16 +166,17 @@ class ContractDraft(CrudDocument): class Contract(CrudDocument): - name: str - title: str - parties: List[Party] + name: str = Field(title="Nom") + title: str = Field(title="Titre") + parties: List[Party] = Field(title="Parties") provisions: List[Provision] = Field( - props={"items-per-row": "1", "numbered": True} + props={"items-per-row": "1", "numbered": True}, + title='Clauses' ) - status: ContractStatus = ContractStatus.published - lawyer: Entity - location: str - date: datetime.date + status: ContractStatus = Field(default=ContractStatus.published, title="Statut") + lawyer: Entity = Field(title="Avocat en charge") + location: str = Field(title="Lieu") + date: datetime.date = Field(title="Date") class Settings(CrudDocument.Settings): fulltext_search = ['name', 'title'] diff --git a/back/app/contract/schemas.py b/back/app/contract/schemas.py index b62e4928..dffa9ac3 100644 --- a/back/app/contract/schemas.py +++ b/back/app/contract/schemas.py @@ -39,18 +39,27 @@ class ContractDraftUpdate(ContractDraftCreate): class ForeignEntityRead(BaseModel): label: str + class Config: + title = "Avocat" + class PartyRead(BaseModel): - signature_affixed: bool - signature_uuid: str = Field(format="signature-link") - part: str - entity: ForeignEntityRead + signature_affixed: bool = Field(title='Signature apposée?') + signature_uuid: str = Field(format="signature-link", title="Lien vers signature") + part: str = Field(title='Rôle') + entity: ForeignEntityRead = Field(title='Client') + + class Config: + title = "Partie" class ContractRead(Contract): parties: List[PartyRead] lawyer: ForeignEntityRead + class Config: + title = "Contrat" + class ContractCreate(Writer): date: datetime.date diff --git a/back/app/entity/models.py b/back/app/entity/models.py index 3dfe3108..5ee30e35 100644 --- a/back/app/entity/models.py +++ b/back/app/entity/models.py @@ -34,6 +34,9 @@ class Individual(EntityType): return '{} {}'.format(self.firstname, self.lastname) + class Config: + title = 'Particulier' + class Employee(BaseModel): role: Indexed(str) = Field(title='Poste') @@ -57,10 +60,16 @@ class Corporation(EntityType): 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' + class Config: + title = 'Institution' + class Entity(CrudDocument): """ diff --git a/back/app/template/models.py b/back/app/template/models.py index 8461b613..3f6f10fa 100644 --- a/back/app/template/models.py +++ b/back/app/template/models.py @@ -14,9 +14,10 @@ class PartyTemplate(BaseModel): "schema": "Entity", } }, - default="" + default="", + title="Partie" ) - part: str + part: str = Field(title="Rôle") representative_id: str = Field( foreignKey={ "reference": { @@ -24,9 +25,13 @@ class PartyTemplate(BaseModel): "schema": "Entity", } }, - default="" + default="", + title="Représentant" ) + class Config: + title = 'Partie' + def remove_html_tags(text): """Remove html tags from a string""" @@ -36,10 +41,14 @@ def remove_html_tags(text): 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 = "" - body: str = RichtextMultiline() + body: str = RichtextMultiline(title="Corps") @validator("label", always=True) def generate_label(cls, v, values, **kwargs): @@ -48,6 +57,9 @@ class ProvisionTemplate(CrudDocument): class Settings(CrudDocument.Settings): fulltext_search = ['name', 'title', 'body'] + class Config: + title = 'Template de clause' + class ProvisionTemplateReference(BaseModel): provision_template_id: str = Field( @@ -58,22 +70,31 @@ class ProvisionTemplateReference(BaseModel): "displayedFields": ['title', 'body'] }, }, - props={"parametrized": True} + props={"parametrized": True}, + title="Template de clause" ) + class Config: + title = 'Clause' + 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 = "" - parties: List[PartyTemplate] = [] + parties: List[PartyTemplate] = Field(default=[], title="Parties") provisions: List[ProvisionTemplateReference] = Field( default=[], - props={"items-per-row": "1", "numbered": True} + props={"items-per-row": "1", "numbered": True}, + title="Clauses" ) variables: List[DictionaryEntry] = Field( default=[], format="dictionary", + title="Variables" ) @validator("label", always=True) @@ -82,3 +103,6 @@ class ContractTemplate(CrudDocument): class Settings(CrudDocument.Settings): fulltext_search = ['name', 'title'] + + class Config: + title = 'Template de contrat' diff --git a/back/app/template/schemas.py b/back/app/template/schemas.py index 1dc116b3..9afbf1d0 100644 --- a/back/app/template/schemas.py +++ b/back/app/template/schemas.py @@ -11,15 +11,23 @@ class ContractTemplateRead(ContractTemplate): class ContractTemplateCreate(Writer): - name: str - title: str - parties: List[PartyTemplate] = [] + name: str = Field(title="Nom") + title: str = Field(title="Titre") + 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( default=[], format="dictionary", - props={"required": False} + props={"required": False}, + title="Variables" ) - provisions: List[ProvisionTemplateReference] = [] + + class Config: + title = 'Template de Contrat' class ContractTemplateUpdate(ContractTemplateCreate): @@ -31,9 +39,12 @@ class ProvisionTemplateRead(ProvisionTemplate): class ProvisionTemplateCreate(Writer): - name: str - title: str = RichtextSingleline() - body: str = RichtextMultiline() + name: str = Field(title="Nom") + title: str = RichtextSingleline(title="Titre") + body: str = RichtextMultiline(title="Corps") + + class Config: + title = 'Template de Clause' class ProvisionTemplateUpdate(ProvisionTemplateCreate):