Sort alphabetical locality then by name.

main
David 2 days ago
parent 008dd2aae9
commit 72e4f0e260

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

Loading…
Cancel
Save