49 lines
1.1 KiB
Python
49 lines
1.1 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",
|
|
}
|
|
})
|
|
|
|
|
|
class ContractTemplate(CrudDocument):
|
|
name: str
|
|
parties: List[PartyTemplate] = []
|
|
provisions: List[ProvisionReference] = []
|
|
|