From 72e4f0e260261075fed2e70c2dbae525a14d86a0 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 30 Jun 2025 10:21:32 -0700 Subject: [PATCH] Sort alphabetical locality then by name. --- generate_pdf_emoji_support.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/generate_pdf_emoji_support.py b/generate_pdf_emoji_support.py index 921680e..04df6cf 100644 --- a/generate_pdf_emoji_support.py +++ b/generate_pdf_emoji_support.py @@ -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 })