Adding chtlawfirm to the api
This commit is contained in:
35
api/rpk-api/firm/contract/routes_signature.py
Normal file
35
api/rpk-api/firm/contract/routes_signature.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from fastapi import Depends, HTTPException, File, UploadFile, APIRouter
|
||||
import shutil
|
||||
|
||||
from uuid import UUID
|
||||
|
||||
from firm.contract.models import Contract, Party
|
||||
from firm.core.routes import get_tenant_db_cursor
|
||||
|
||||
|
||||
signature_router = APIRouter()
|
||||
|
||||
@signature_router.get("/{signature_id}", response_description="")
|
||||
async def get_signature(signature_id: UUID, db=Depends(get_tenant_db_cursor)) -> Party:
|
||||
contract = await Contract.find_by_signature_id(db, signature_id)
|
||||
signature = contract.get_signature(signature_id)
|
||||
return signature
|
||||
|
||||
@signature_router.post("/{signature_id}", response_description="")
|
||||
async def affix_signature(signature_id: UUID, signature_file: UploadFile = File(...), db=Depends(get_tenant_db_cursor)) -> bool:
|
||||
contract = await Contract.find_by_signature_id(db, signature_id)
|
||||
|
||||
if not contract:
|
||||
raise HTTPException(status_code=404, detail="Contract record not found!")
|
||||
|
||||
signature_index = contract.get_signature_index(signature_id)
|
||||
signature = contract.parties[signature_index]
|
||||
|
||||
if signature.signature_affixed:
|
||||
raise HTTPException(status_code=400, detail="Signature already affixed")
|
||||
|
||||
with open(f'media/signatures/{signature_id}.png', "wb") as buffer:
|
||||
shutil.copyfileobj(signature_file.file, buffer)
|
||||
|
||||
await contract.affix_signature(db, signature_index)
|
||||
return True
|
||||
Reference in New Issue
Block a user