Sort alphabetical locality then by name.

main
David 21 hours ago
parent 008dd2aae9
commit 72e4f0e260

@ -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,9 +38,15 @@ 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 = {
'Timestamp',
@ -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
})

Loading…
Cancel
Save