Creating a normal preview for contract drafts

This commit is contained in:
2023-03-06 21:05:49 +01:00
parent 8bb3d0f44e
commit d43164c93d
4 changed files with 36 additions and 17 deletions

View File

@@ -1,3 +1,5 @@
import datetime
from fastapi import APIRouter
from fastapi.responses import HTMLResponse, FileResponse
from fastapi.templating import Jinja2Templates
@@ -11,7 +13,7 @@ from pathlib import Path
from app.entity.models import Entity
from app.template.models import ProvisionTemplate
from ..schemas import ContractDraft, Contract
from ..models import ContractDraft, Contract, replace_variables_in_value
async def build_model(model):
@@ -31,13 +33,19 @@ async def build_model(model):
provisions = []
for p in model.provisions:
if p.provision.type == "template":
provisions.append(await ProvisionTemplate.get(p.provision.provision_template_id))
provision = await ProvisionTemplate.get(p.provision.provision_template_id)
else:
provisions.append(p.provision)
provision = p.provision
provision.title = replace_variables_in_value(model.variables, provision.title)
provision.body = replace_variables_in_value(model.variables, provision.body)
provisions.append(provision)
model.provisions = provisions
model.location = "Toulouse"
model.date = "01/01/1970"
model = model.dict()
model['location'] = "Los Santos, SA"
model['date'] = datetime.date(1970, 1, 1)
return model
@@ -66,11 +74,21 @@ async def render_css(host, draft):
})
@print_router.get("/preview/{signatureId}", response_class=HTMLResponse)
async def create(signatureId: str) -> str:
# await build_model(await ContractDraft.get("63e92534aafed8b509f229c4"))
@print_router.get("/preview/draft/{draftId}", response_class=HTMLResponse)
async def create(draftId: str) -> str:
draft = await build_model(await ContractDraft.get(draftId))
crit = ElemMatch(Contract.parties, {"signature_uuid": "85476dc8-8b98-4f25-8e7d-1542c152074f"})
lawyer = {
"firstname": "Nathaniel",
"lastname": "Toshi",
}
return await render_print('localhost', draft, lawyer)
@print_router.get("/preview/{signature_id}", response_class=HTMLResponse)
async def create(signature_id: str) -> str:
crit = ElemMatch(Contract.parties, {"signature_uuid": signature_id})
contract = await Contract.find_one(crit)
lawyer = {