Files
cht-lawfirm/back/app/template/models.py

55 lines
1.2 KiB
Python

from typing import List
from pydantic import BaseModel, Field, validator
from ..core.models import CrudDocument, text_area
class PartyTemplate(BaseModel):
entity_id: str = Field(
foreignKey={
"reference": {
"resource": "entity",
"schema": "Entity",
}
},
default=""
)
part: str
class ProvisionTemplate(CrudDocument):
name: str
title: str
label: str = None
body: str = text_area(size=8)
@validator("label", always=True)
def generate_label(cls, v, values, **kwargs):
return "{} - \"{}\"".format(values['name'], values['title'])
class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title', 'body']
class ProvisionReference(BaseModel):
provision_template_id: str = Field(
foreignKey={
"reference": {
"resource": "template/provision",
"schema": "ProvisionTemplate",
},
},
props={"test": "test"}
)
class ContractTemplate(CrudDocument):
name: str
parties: List[PartyTemplate] = []
provisions: List[ProvisionReference] = Field(
default=[],
props={"items-per-row": "1"}
)