Creating a normal preview for contract drafts
This commit is contained in:
@@ -5,7 +5,7 @@ from ..core.routes import get_crud_router
|
||||
from .routes_draft import draft_router
|
||||
from .print import print_router
|
||||
|
||||
from .models import Contract, ContractDraft
|
||||
from .models import Contract, ContractDraft, replace_variables_in_value
|
||||
from .schemas import ContractCreate, ContractRead, ContractUpdate
|
||||
|
||||
from ..entity.models import Entity
|
||||
@@ -74,9 +74,3 @@ async def create(item: ContractCreate, user=Depends(can_create_contract)) -> dic
|
||||
@contract_router.put("/{id}", response_description="")
|
||||
async def update(id: str, req: ContractUpdate) -> ContractRead:
|
||||
raise HTTPException(status_code=400, detail="No modification on contract")
|
||||
|
||||
|
||||
def replace_variables_in_value(variables, value: str):
|
||||
for v in variables:
|
||||
value = value.replace('%{}%'.format(v.key), v.value)
|
||||
return value
|
||||
|
||||
@@ -125,3 +125,10 @@ class Contract(CrudDocument):
|
||||
else datetime.datetime(year=dt.year, month=dt.month, day=dt.day,
|
||||
hour=0, minute=0, second=0)
|
||||
}
|
||||
|
||||
|
||||
def replace_variables_in_value(variables, value: str):
|
||||
for v in variables:
|
||||
if v.value:
|
||||
value = value.replace('%{}%'.format(v.key), v.value)
|
||||
return value
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user