From 52ea9dfb638eb7d5de17f5bdb1469dd67c2c739f Mon Sep 17 00:00:00 2001 From: ewandor Date: Mon, 6 Mar 2023 21:25:11 +0100 Subject: [PATCH] Dynamic lawyer --- back/app/contract/models.py | 1 + back/app/contract/print/__init__.py | 35 +++++++------------- back/app/contract/print/templates/print.html | 2 +- back/app/contract/schemas.py | 1 + 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/back/app/contract/models.py b/back/app/contract/models.py index c5051173..4ee2bc9a 100644 --- a/back/app/contract/models.py +++ b/back/app/contract/models.py @@ -114,6 +114,7 @@ class Contract(CrudDocument): props={"items-per-row": "1", "numbered": True} ) status: ContractStatus = ContractStatus.published + lawyer: Entity location: str date: datetime.date diff --git a/back/app/contract/print/__init__.py b/back/app/contract/print/__init__.py index f60d7eb1..f79f2893 100644 --- a/back/app/contract/print/__init__.py +++ b/back/app/contract/print/__init__.py @@ -46,6 +46,10 @@ async def build_model(model): model = model.dict() model['location'] = "Los Santos, SA" model['date'] = datetime.date(1970, 1, 1) + model['lawyer'] = {'entity_data': { + "firstname": "prénom avocat", + "lastname": "nom avocat", + }} return model @@ -57,58 +61,43 @@ print_router = APIRouter() templates = Jinja2Templates(directory=str(BASE_PATH / "templates")) -async def render_print(host, contract, lawyer): +async def render_print(host, contract): template = templates.get_template("print.html") return template.render({ "contract": contract, - "lawyer": lawyer, "static_host": host }) -async def render_css(host, draft): +async def render_css(host, contract): template = templates.get_template("styles.css") return template.render({ - "draft": draft, + "contract": contract, "static_host": host }) @print_router.get("/preview/draft/{draftId}", response_class=HTMLResponse) -async def create(draftId: str) -> str: +async def preview_draft(draftId: str) -> str: draft = await build_model(await ContractDraft.get(draftId)) - lawyer = { - "firstname": "Nathaniel", - "lastname": "Toshi", - } - - return await render_print('localhost', draft, lawyer) + return await render_print('localhost', draft) @print_router.get("/preview/{signature_id}", response_class=HTMLResponse) -async def create(signature_id: str) -> str: +async def preview_contract(signature_id: str) -> str: crit = ElemMatch(Contract.parties, {"signature_uuid": signature_id}) contract = await Contract.find_one(crit) - lawyer = { - "firstname": "Nathaniel", - "lastname": "Toshi", - } - - return await render_print('localhost', contract, lawyer) + return await render_print('localhost', contract) @print_router.get("/pdf", response_class=FileResponse) async def create_pdf() -> str: draft = await build_model(await ContractDraft.get("63e92534aafed8b509f229c4")) - lawyer = { - "firstname": "Nathaniel", - "lastname": "Toshi", - } font_config = FontConfiguration() - html = HTML(string=await render_print('nginx', draft, lawyer)) + html = HTML(string=await render_print('nginx', draft)) css = CSS(string=await render_css('nginx', draft), font_config=font_config) html.write_pdf('out.pdf', stylesheets=[css], font_config=font_config) diff --git a/back/app/contract/print/templates/print.html b/back/app/contract/print/templates/print.html index 4e105e48..835bd61b 100644 --- a/back/app/contract/print/templates/print.html +++ b/back/app/contract/print/templates/print.html @@ -40,7 +40,7 @@ {% endfor %}

d'autre part

-

Sous la supervision légale de Maître {{ lawyer.firstname }} {{ lawyer.lastname }}

+

Sous la supervision légale de Maître {{ contract.lawyer.entity_data.firstname }} {{ contract.lawyer.entity_data.lastname }}

Il a été convenu l'exécution des prestations ci-dessous, conformément aux conditions générales et particulières ci-après:

diff --git a/back/app/contract/schemas.py b/back/app/contract/schemas.py index ad382708..729e9da5 100644 --- a/back/app/contract/schemas.py +++ b/back/app/contract/schemas.py @@ -51,6 +51,7 @@ class PartyRead(BaseModel): class ContractRead(Contract): parties: List[PartyRead] + lawyer: EntityRead class ContractCreate(Writer):