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,21 +238,24 @@ 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):"
str(ord(",")), # Field Separator + ",".join( # Magic CSV export string
str(ord('"')), # Text Delimiter [
"76", # Character Set - UTF-8 => 76 str(ord(",")), # Field Separator
"", # starting line; ignored in export str(ord('"')), # Text Delimiter
"", # cell format codes; ignored in export "76", # Character Set - UTF-8 => 76
"1033", # Language Identifier - en-US => 1033 "", # starting line; ignored in export
"", # Quoted field as text; default False "", # cell format codes; ignored in export
"", # Detect special numbers; default True "1033", # Language Identifier - en-US => 1033
"", # Save cell contents as shown; default True "", # Quoted field as text; default False
"", # Export cell formulas; default false "", # Detect special numbers; default True
"", # Remove spaces; ignored in export "", # Save cell contents as shown; default True
"-1", # Export sheets - all sheets => -1 "", # Export cell formulas; default false
] "", # Remove spaces; ignored in export
"-1", # Export sheets - all sheets => -1
]
)
) )
result = subprocess.run( result = subprocess.run(
[ [
@ -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), {
"avatar": avatar, "address": "\n".join(address),
"row": row, "avatar": avatar,
"imb": "", "row": row,
} "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