DAMHelper / form /form.py
enricorampazzo's picture
added linux intel-npu library dependency wheel, hopefully HF will install it and shut up
7dfaba7
raw
history blame
6.13 kB
from pathlib import Path
from typing import TypedDict
from PyPDFForm import PdfWrapper
from utils.date_utils import get_today_date_as_dd_mm_yyyy
from utils.parsing_utils import find_and_parse_date, find_and_parse_phone_number
def build_form_data_from_answers(answers: dict[int, str], categories: list[str], signature: str | None = None):
form_data = {}
for category in categories:
form_data[form_fields_map[category]] = True
form_data[form_fields_map["minor_work"]] = True
form_data[form_fields_map["signed_by"]] = answers[0]
form_data[form_fields_map["community"]] = answers[2]
form_data[form_fields_map["building_name"]] = answers[3]
form_data[form_fields_map["unit_no"]] = answers[4]
form_data[form_fields_map["owner" if "owner" in answers[5].lower() else "tenant"]] = True
form_data[form_fields_map["start_date"]] = find_and_parse_date(answers[6])
form_data[form_fields_map["end_date"]] = find_and_parse_date(answers[7])
form_data[form_fields_map["contact_number"]] = find_and_parse_phone_number(answers[8])
form_data[form_fields_map["contractor_name"]] = answers[9]
form_data[form_fields_map["contractor_contact_number"]] = answers[10]
form_data[form_fields_map["contractor_email"]] = answers[11]
form_data[form_fields_map["email"]] = answers[12]
form_data[form_fields_map["occupant_name"]] = answers[0]
form_data[form_fields_map["signature_date"]] = get_today_date_as_dd_mm_yyyy()
if signature:
form_data[form_fields_map["signature"]] = signature
return form_data
def write_pdf_form(form_data: dict[str, str | bool | int], output_path:Path):
base_form_path = Path(__file__).parent
base_form_path = base_form_path.joinpath("form.pdf")
with open(base_form_path, "rb") as blank_form:
filled_form = PdfWrapper(blank_form).fill(form_data)
with open(output_path, "wb+") as filled_form_file:
filled_form_file.write(filled_form.read())
class FormFields(TypedDict, total=True):
start_date: str
end_date: str
signed_by: str
signature_date: str
community: str
email: str
unit_no: str
contact_number: str
building_name: str
contractor_name: str
contractor_email: str
contractor_contact_number: str
occupant_name: str
civil: str
electrical_AC: str
furniture_delivery: str
handyman: str
pest_control: str
sail_shade: str
wardrobes: str
wooden_flooring: str
plumbing_sanitary: str
safety_systems: str
soft_landscaping: str
balcony_tiles: str
bathroom_toilet_refurbish: str
staircase_railing: str
storage_box: str
tiling_works: str
doors_door_frames: str
gypsum_ceiling: str
kitchen_refurbish: str
lights_and_sockets: str
painting_wallpapering: str
seating_area_barbecuing_fountain: str
other_work_checkbox: str
owner: str
tenant: str
signature: str
minor_work: str
form_fields_map: FormFields = {"start_date": "From", "end_date": "to", "signed_by": "name-10",
"signature_date": "From--1", "community": "Name-2", "email": "Name-3",
"unit_no": "Name-4", "contact_number": "Name-5", "building_name": "Name-6",
"contractor_name": "Name-7", "contractor_email": "name-8",
"contractor_contact_number": "name-9", "occupant_name": "name-1",
"other_work": "name-19", "civil": "3", "electrical_AC": "10", "furniture_delivery": "14",
"handyman": "18", "pest_control": "21", "sail_shade": "12", "wardrobes": "16",
"wooden_flooring": "24",
"plumbing_sanitary": "4", "safety_systems": "4", "soft_landscaping": "9",
"balcony_tiles": "13", "bathroom_toilet_refurbish": "20",
"staircase_railing": "17", "storage_box": "11", "tiling_works": "15",
"doors_door_frames": "6", "gypsum_ceiling": "22", "kitchen_refurbish": "7",
"lights_and_sockets": "23", "painting_wallpapering": "19",
"seating_area_barbecuing_fountain": "8",
"other_work_checkbox": "69", "owner": "Check Box4", "tenant": "Check Box3",
"signature": "Signature2", "minor_work": "2"}
work_categories = {"other_work": "other work", "civil": "Civil work, masonry",
"electrical_AC": "electrical / AC / air conditioning", "furniture_delivery": "furniture delivery",
"handyman": "handyman work, repairs, furniture assembly, furniture installation", "pest_control": "pest control",
"sail_shade": "sail shade, curtains", "wardrobes": "wardrobes",
"wooden_flooring": "wooden flooring",
"plumbing_sanitary": "plumbing / sanitary / bathroom works such as repairing a sink, tap, toilet, shower or bathtub",
"safety_systems": "safety systems, surveillance systems installation",
"soft_landscaping": "soft landscaping", "balcony_tiles": "installation and fixing of balcony tiles",
"bathroom_toilet_refurbish": "bathroom or toilet refurbishment or renovation",
"staircase_railing": "staircase rails, handrails", "storage_box": "storage box",
"tiling_works": "tiles installation or repair",
"doors_door_frames": "work related to doors and door frames",
"gypsum_ceiling": "gypsum ceiling installation or maintenance",
"kitchen_refurbish": "kitchen renovation or refurbishment",
"lights_and_sockets": "installation of lights, ceiling lights, power sockets",
"painting_wallpapering": "painting, wallpaper installation",
"seating_area_barbecuing_fountain": "installation or renovation of outdoor structures such as seating area, barbecuing area or fountains"}