import datetime from typing import List from pydantic import BaseModel, Field from .models import ContractDraft, DraftProvision, DraftParty, Contract from ..entity.models import Entity from ..core.schemas import Writer from ..core.models import DictionaryEntry class ContractDraftRead(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): return for p in self.parties: p.entity = await Entity.get(p.entity) 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(Contract): parties: List[PartyRead] lawyer: ForeignEntityRead class Config: title = "Contrat" class ContractCreate(Writer): date: datetime.date location: str draft_id: str class ContractUpdate(BaseModel): pass