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

Initial commit

parent ea13ea1b
No related branches found
No related tags found
No related merge requests found
*.csv
*.zip
import csv
import collections
import os.path
def process(reader):
event_data = collections.defaultdict(list)
counter = collections.Counter()
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')
exams = [e for e in exams if e]
lastname = line['Invitee Last Name']
firstname = line['Invitee First Name']
email = line['Invitee Email']
if line['Canceled'] == 'true':
print(f"Cancelled: {lastname} {firstname} for {date} {timename}")
continue
if not firstname or not lastname:
print(f"!!! WRONG NAME: {lastname} {firstname} {email} for {date} {timename} {exams}")
if not exams:
print(f"!!! NO EXAMS: {lastname} {firstname} {email} for {date} {timename}")
event_data[filename].append((lastname, firstname, ' '.join(exams), email))
counter.update([(lastname, firstname)])
for name, count in counter.items():
if count != 1:
datas = []
print(f'!!! COUNT {name[0]} {name[1]} {count} {datas}')
for filename, datalist in event_data.items():
for data in datalist:
if data[0] == name[0] and data[1] == name[1]:
print(f"{filename} {data}")
datas.append(data)
print()
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, '', ''])
for row in data:
writer.writerow(list(row))
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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment