Compare commits

...

2 commits

Author SHA1 Message Date
Skye a8e89ca579 Add type to CSV row 2023-12-07 18:20:56 -05:00
Skye f8887eb7ac Format previous commit 2023-12-07 18:18:17 -05:00

View file

@ -238,7 +238,9 @@ if args.address_file.suffix == ".csv":
csv_filename = args.address_file csv_filename = args.address_file
elif args.address_file.suffix == ".ods": elif args.address_file.suffix == ".ods":
# https://help.libreoffice.org/latest/en-US/text/shared/guide/csv_params.html # https://help.libreoffice.org/latest/en-US/text/shared/guide/csv_params.html
export_options = "csv:Text - txt - csv (StarCalc):" + ",".join( # Magic CSV export string export_options = (
"csv:Text - txt - csv (StarCalc):"
+ ",".join( # Magic CSV export string
[ [
str(ord(",")), # Field Separator str(ord(",")), # Field Separator
str(ord('"')), # Text Delimiter str(ord('"')), # Text Delimiter
@ -254,6 +256,7 @@ elif args.address_file.suffix == ".ods":
"-1", # Export sheets - all sheets => -1 "-1", # Export sheets - all sheets => -1
] ]
) )
)
result = subprocess.run( result = subprocess.run(
[ [
"libreoffice", "libreoffice",
@ -270,6 +273,19 @@ elif args.address_file.suffix == ".ods":
else: else:
raise Exception("Unknown file type for --address-file") raise Exception("Unknown file type for --address-file")
class CSVRow(TypedDict):
Name: str
Address: str
DPC: str
Country: str
Design: str
Type: str
Personalization: str
Avatar: str | None
US: str
csvfile = open(csv_filename) csvfile = open(csv_filename)
rows = csv.DictReader(csvfile) rows = csv.DictReader(csvfile)
@ -283,12 +299,13 @@ mid = secrets.get("mailer_id")
class Card(TypedDict): class Card(TypedDict):
address: str address: str
avatar: Path | None avatar: Path | None
row: dict[str, str] row: CSVRow
imb: str imb: str
cards: list[Card] = [] cards: list[Card] = []
for row in rows: for row in rows:
row = CSVRow(**row)
if row["Address"] == "": if row["Address"] == "":
continue continue
@ -301,18 +318,19 @@ for row in rows:
address = row["Address"].split("\n") + country address = row["Address"].split("\n") + country
if row.get("Avatar", "") != "": if (avatar_url := row.get("Avatar", "")) != "":
avatar = get_avatar(row["Avatar"], secrets) avatar = get_avatar(avatar_url, secrets) # type: ignore
else: else:
avatar = None avatar = None
card: Card = { cards.append(
{
"address": "\n".join(address), "address": "\n".join(address),
"avatar": avatar, "avatar": avatar,
"row": row, "row": row,
"imb": "", "imb": "",
} }
cards.append(card) )
# Typst can't access files outside the project root, except through a symlink # Typst can't access files outside the project root, except through a symlink
# Create one in cache to use here # Create one in cache to use here