Adding chtlawfirm to the api
This commit is contained in:
83
api/rpk-api/firm/contract/schemas.py
Normal file
83
api/rpk-api/firm/contract/schemas.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import datetime
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from firm.contract.models import ContractDraft, DraftProvision, DraftParty, Contract
|
||||
|
||||
from firm.entity.models import Entity
|
||||
from firm.core.schemas import Writer, Reader
|
||||
from firm.core.models import DictionaryEntry
|
||||
|
||||
|
||||
class ContractDraftRead(Reader, ContractDraft):
|
||||
pass
|
||||
|
||||
|
||||
class ContractDraftCreate(Writer):
|
||||
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},
|
||||
title='Clauses'
|
||||
)
|
||||
variables: List[DictionaryEntry] = Field(
|
||||
default=[],
|
||||
format="dictionary",
|
||||
title='Variables'
|
||||
)
|
||||
|
||||
async def validate_foreign_key(self, db):
|
||||
for p in self.parties:
|
||||
if p.entity_id:
|
||||
p.entity = await Entity.get(db, p.entity_id)
|
||||
if p.entity is None:
|
||||
raise ValueError
|
||||
|
||||
|
||||
class ContractDraftUpdate(ContractDraftCreate):
|
||||
pass
|
||||
|
||||
|
||||
class ForeignEntityRead(BaseModel):
|
||||
label: str
|
||||
|
||||
class Config:
|
||||
title = "Avocat"
|
||||
|
||||
|
||||
class PartyRead(BaseModel):
|
||||
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(Reader, Contract):
|
||||
parties: List[PartyRead]
|
||||
lawyer: ForeignEntityRead
|
||||
|
||||
class Config:
|
||||
title = "Contrat"
|
||||
|
||||
|
||||
class ContractCreate(Writer):
|
||||
date: datetime.date
|
||||
location: str
|
||||
draft_id: str
|
||||
|
||||
class ContractInit(BaseModel):
|
||||
date: datetime.date
|
||||
location: str
|
||||
lawyer: dict
|
||||
name: str
|
||||
title: str
|
||||
parties: List[dict]
|
||||
provisions: List[dict]
|
||||
|
||||
class ContractUpdate(BaseModel):
|
||||
pass
|
||||
Reference in New Issue
Block a user