Skip to content
Snippets Groups Projects
Commit c7f20351 authored by Florian Bruhin's avatar Florian Bruhin
Browse files

Add cancelled

parent 410a64f8
No related branches found
No related tags found
No related merge requests found
......@@ -3,9 +3,10 @@ import collections
import pathlib
import argparse
import dataclasses
from typing import List, Dict
from typing import List, Dict, Optional
import openpyxl
import openpyxl.styles
@dataclasses.dataclass
......@@ -15,9 +16,13 @@ class Signup:
firstname: str
exams: str
email: str
cancelled: Optional[str] = None
def row_data(self):
return (self.lastname, self.firstname, self.exams, self.email)
data = [self.lastname, self.firstname, self.exams, self.email]
if self.cancelled is not None:
data.append(f'Storniert: {self.cancelled}')
return data
def process(reader: csv.reader) -> Dict[str, List[Signup]]:
......@@ -40,16 +45,17 @@ def process(reader: csv.reader) -> Dict[str, List[Signup]]:
firstname = line['Invitee First Name']
email = line['Invitee Email']
if line['Canceled'] == 'true':
print(f"Cancelled: {lastname} {firstname} for {slot}")
continue
if not firstname or not lastname:
print(f"!!! WRONG NAME: {lastname} {firstname} {email} for {slot} {exams}")
if not exams:
print(f"!!! NO EXAMS: {lastname} {firstname} {email} for {slot}")
event_data[slot].append(Signup(lastname, firstname, ' '.join(exams), email))
signup = Signup(lastname, firstname, ' '.join(exams), email)
if line['Canceled'] == 'true':
print(f"Cancelled: {lastname} {firstname} for {slot}")
signup.cancelled = line['Cancellation reason']
event_data[slot].append(signup)
return event_data
......@@ -59,6 +65,7 @@ def _resize_cols(sheet: openpyxl.worksheet.worksheet.Worksheet) -> None:
'B': 20,
'C': 50,
'D': 30,
'E': 50,
}
for col, dim in dimensions.items():
sheet.column_dimensions[col].width = dim
......@@ -70,6 +77,16 @@ def writeout(event_data: Dict[str, List[Signup]], path: pathlib.Path) -> None:
sheet = workbook.create_sheet(title=slot.replace(':', '.'))
for signup in data:
sheet.append(list(signup.row_data()))
if signup.cancelled is not None:
for tpl in sheet.iter_cols(min_row=sheet.max_row):
assert len(tpl) == 1, tpl
cell = tpl[0]
assert cell.row == sheet.max_row, cell
cell.font = openpyxl.styles.Font(
color="FF0000",
strike=cell.column != sheet.max_column,
)
_resize_cols(sheet)
del workbook['Sheet']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment