diff --git a/back/app/contract/__init__.py b/back/app/contract/__init__.py
index 9499cb94..1e541025 100644
--- a/back/app/contract/__init__.py
+++ b/back/app/contract/__init__.py
@@ -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
diff --git a/back/app/contract/models.py b/back/app/contract/models.py
index ff870d87..c5051173 100644
--- a/back/app/contract/models.py
+++ b/back/app/contract/models.py
@@ -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
diff --git a/back/app/contract/print/__init__.py b/back/app/contract/print/__init__.py
index 43f90058..f60d7eb1 100644
--- a/back/app/contract/print/__init__.py
+++ b/back/app/contract/print/__init__.py
@@ -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 = {
diff --git a/front/app/src/app/views/contracts/drafts.component.ts b/front/app/src/app/views/contracts/drafts.component.ts
index 1a85d54a..5b605878 100644
--- a/front/app/src/app/views/contracts/drafts.component.ts
+++ b/front/app/src/app/views/contracts/drafts.component.ts
@@ -94,7 +94,7 @@ export class DraftsNewComponent extends BaseDraftsComponent implements OnInit {
[resource]="this.resource"
[schema]="this.schema">
- Preview
+ Preview
`