-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathfeedback.py
executable file
·92 lines (66 loc) · 2.47 KB
/
feedback.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env python
import sys, getopt, json, codecs
import mistune
import pystache
from os import path
template = """Hey there {{speaker}},
Thank you so much for helping make Chicago Roboto a big success. As promised, here are your session feedback results.
Session: **{{session}}**
Average Score:
{{average_table}}
Dump of scores:
{{table}}
We hope to see you in 2018!
Best
Jerrell, John and Ryan"""
def print_usage():
print "feedback.py -i <inputfile> -o <outputfile>"
def main(argv):
inputfile=''
outputfile=''
try:
opts, args = getopt.getopt(argv, "hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print_usage()
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print_usage()
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
with open(inputfile) as f:
data = json.load(f)
data = data['events']['chicagoroboto-2017']
speakers = data['speakers']
sessions = data['sessions']
feedback = data['feedback']
for session_id in feedback.iterkeys():
content = {}
session = sessions[session_id]
content['session'] = session['name']
# Feedback Table
feedback_table_template = "| Overall | Speaker | Technical |\n"
feedback_table_template += "| -------:| -------:| ---------:|\n"
session_feedback = feedback[session_id]
overall_avg = float(sum(f['overall'] for k, f in session_feedback.iteritems())) / len(session_feedback)
speaker_avg = float(sum(f['speaker'] for k, f in session_feedback.iteritems())) / len(session_feedback)
tech_avg = float(sum(f['technical'] for k, f in session_feedback.iteritems())) / len(session_feedback)
content['average_table'] = feedback_table_template
content['average_table'] += "| {:.2f} | {:.2f} | {:.2f} |".format(overall_avg, speaker_avg, tech_avg)
content['table'] = feedback_table_template
for key, fb in session_feedback.iteritems():
content['table'] += "| {} | {} | {} |\n".format(fb['overall'], fb['speaker'], fb['technical'])
session_speakers = []
if 'speakers' in session:
session_speakers = [speakers[speaker_id] for speaker_id in session['speakers']]
for speaker in session_speakers:
content['speaker'] = speaker['name']
email = mistune.markdown(pystache.render(template, content))
filename = "{}-{}.html".format(speaker['id'], session_id)
with codecs.open(path.join(outputfile, filename), "w", "utf-8") as f:
f.write(email)
if __name__ == "__main__":
main(sys.argv[1:])