|
|
|
@ -5,6 +5,7 @@ import tempfile
|
|
|
|
|
import jinja2
|
|
|
|
|
import os
|
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
|
from itertools import groupby
|
|
|
|
|
|
|
|
|
|
def is_number(s):
|
|
|
|
|
"""Returns True if s can be interpreted as a float."""
|
|
|
|
@ -37,8 +38,14 @@ def main():
|
|
|
|
|
reader = csv.DictReader(f, delimiter='\t')
|
|
|
|
|
rows = list(reader)
|
|
|
|
|
|
|
|
|
|
# 2. Sort rows by sending locality
|
|
|
|
|
rows = sorted(rows, key=lambda r: r.get("Sending locality:", "").strip())
|
|
|
|
|
# 2. Sort rows by sending locality first, then by name
|
|
|
|
|
rows = sorted(rows, key=lambda r: (
|
|
|
|
|
r.get("Sending locality:", "").strip(),
|
|
|
|
|
r.get("Name (last, first): ", "").strip()
|
|
|
|
|
))
|
|
|
|
|
# Group rows by locality to generate separate pdfs
|
|
|
|
|
grouped_rows = groupby(rows, key=lambda r: r.get("Sending locality:", "").strip())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Known columns to skip
|
|
|
|
|
skip_cols = {
|
|
|
|
@ -51,7 +58,7 @@ def main():
|
|
|
|
|
# 3. Process each row into a data structure for Jinja2
|
|
|
|
|
processed_rows = []
|
|
|
|
|
for row in rows:
|
|
|
|
|
name = row.get('Name (last, first):', '').strip()
|
|
|
|
|
#name = row.get('Name (last, first):', '').strip() # TODO: Refactor: This isn't working because it's 'Name (last, first): '. Unused for now.
|
|
|
|
|
locality = row.get('Sending locality:', '').strip()
|
|
|
|
|
|
|
|
|
|
q_and_a = []
|
|
|
|
@ -90,7 +97,7 @@ def main():
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
processed_rows.append({
|
|
|
|
|
"name": name,
|
|
|
|
|
# "name": name,
|
|
|
|
|
"locality": locality,
|
|
|
|
|
"entries": q_and_a
|
|
|
|
|
})
|
|
|
|
|