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

Initial preparation for xlsx output

parent 607c6ae4
Branches
Tags
No related merge requests found
import csv
import openpyxl
import collections
import os.path
......@@ -6,16 +7,12 @@ def process(reader):
event_data = collections.defaultdict(list)
for line in reader:
date, time = line['Start Date & Time'].split(' ')
if time == '12:15':
timename = 'Mittag'
elif time == '17:30':
timename = 'Abend'
else:
raise ValueError(time)
filename = f'{date}_{timename}.csv'
exams = line['Response 1'].split('\n') + line['Response 2'].split('\n')
date, slot = line['Start Date & Time'].split(' ')
# FIXME
slot = f'{date} {slot}'
# assert date == ...
exams = line['Response 1'].split('\n') + line['Response 2'].split('\n') # fixme 3 and 4
exams = [e for e in exams if e]
lastname = line['Invitee Last Name']
......@@ -23,29 +20,41 @@ def process(reader):
email = line['Invitee Email']
if line['Canceled'] == 'true':
print(f"Cancelled: {lastname} {firstname} for {date} {timename}")
print(f"Cancelled: {lastname} {firstname} for {slot}")
continue
if not firstname or not lastname:
print(f"!!! WRONG NAME: {lastname} {firstname} {email} for {date} {timename} {exams}")
print(f"!!! WRONG NAME: {lastname} {firstname} {email} for {slot} {exams}")
if not exams:
print(f"!!! NO EXAMS: {lastname} {firstname} {email} for {date} {timename}")
print(f"!!! NO EXAMS: {lastname} {firstname} {email} for {slot}")
event_data[filename].append((lastname, firstname, ' '.join(exams), email))
event_data[slot].append((lastname, firstname, ' '.join(exams), email))
return event_data
def writeout(filename, data):
with open(filename, 'w', newline='', encoding='latin1') as f:
writer = csv.writer(f, delimiter=';')
date, timename = os.path.splitext(filename)[0].split('_')
writer.writerow([date, timename, '', ''])
def _resize_cols(sheet):
dimensions = {
'A': 20,
'B': 20,
'C': 50,
'D': 30,
}
for col, dim in dimensions.items():
sheet.column_dimensions[col].width = dim
def writeout(event_data):
workbook = openpyxl.Workbook()
for slot, data in event_data.items():
sheet = workbook.create_sheet(title=slot.replace(':', '.'))
for row in data:
writer.writerow(list(row))
sheet.append(list(row))
_resize_cols(sheet)
del workbook['Sheet']
workbook.save('einsicht.xlsx')
with open('events-export.csv') as f:
reader = csv.DictReader(f)
all_data = process(reader)
for filename, data in all_data.items():
writeout(filename, data)
event_data = process(reader)
writeout(event_data)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment