Adding contracts and provisions templates

This commit is contained in:
2023-01-31 23:56:48 +01:00
parent c360878b5a
commit 35c37749f3
12 changed files with 302 additions and 54 deletions

View File

@@ -1,34 +1,48 @@
from datetime import datetime
from typing import List
from enum import Enum
from pydantic import BaseModel, Field
from beanie import Document
from pydantic import BaseModel, Field, validator
class ContractType(str, Enum):
individual = 'individual'
corporation = 'corporation'
from ..core.models import CrudDocument, text_area
class PartyTemplate(BaseModel):
entity_id: str
entity_id: str = Field(
foreignKey={
"reference": {
"resource": "entity",
"schema": "Entity",
}
},
default=""
)
part: str
class ProvisionTemplate(CrudDocument):
name: str
address: 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 ClauseTemplate(Document):
class ProvisionReference(BaseModel):
provision_template_id: str = Field(foreignKey={
"reference": {
"resource": "template/provision",
"schema": "ProvisionTemplate",
}
})
class ContractTemplate(CrudDocument):
name: str
body: str
created_at: datetime = Field(default=datetime.utcnow(), nullable=False)
updated_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)
parties: List[PartyTemplate] = []
provisions: List[ProvisionReference] = []
class ContractTemplate(Document):
id: str
type: ContractType
parties: List[PartyTemplate]
clauses: List[ClauseTemplate]
created_at: datetime = Field(default=datetime.utcnow(), nullable=False)
updated_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)