Specifically, some puzzles may be missing any of the 'rounds', 'tags',
or 'url' keys. Previousl, the code was crashing whenever this was the case.
With this commit, empty strings or empty lists are used as the values
for any missing keys as appropriate.
if puzzle['status'] == 'solved':
puzzle_list += [ ' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
if puzzle['status'] == 'solved':
puzzle_list += [ ' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
- ' <td>{}</td>\n'.format(elink(puzzle['url'], 'Puzzle')),
+ ' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td>{}</td>\n'.format(puzzle['solution']),
# ' <td></td>\n',
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td>{}</td>\n'.format(puzzle['solution']),
# ' <td></td>\n',
- ' <td>{}</td>\n'.format("".join(puzzle['tags'])),
+ ' <td>{}</td>\n'.format("".join(puzzle.get('tags',[]))),
' </tr>\n']
else:
puzzle_list += [ ' <tr>\n',
' <td><b>{}</b></td>\n'.format(elink(slack_url, puzzle['name']+meta)),
' </tr>\n']
else:
puzzle_list += [ ' <tr>\n',
' <td><b>{}</b></td>\n'.format(elink(slack_url, puzzle['name']+meta)),
- ' <td>{}</td>\n'.format(elink(puzzle['url'], 'Puzzle')),
+ ' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td></td>\n',
# ' <td></td>\n',
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td></td>\n',
# ' <td></td>\n',
- ' <td>{}</td>\n'.format(" ".join(puzzle['tags'])),
+ ' <td>{}</td>\n'.format(" ".join(puzzle.get('tags',[]))),
' </tr>\n']
end = [' </tbody>\n',
' </table>\n',
' </tr>\n']
end = [' </tbody>\n',
' </table>\n',
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
- round_url = [link(website + "_".join(rnd.split()) + "_round.html", rnd) for rnd in puzzle['rounds']]
+ if 'rounds' in puzzle:
+ round_url = [link(website + "_".join(rnd.split()) + "_round.html", rnd) for rnd in puzzle['rounds']]
+ else:
+ round_url = ''
if puzzle['status'] == 'solved':
solution = puzzle['solution']
status = 'solved'
if puzzle['status'] == 'solved':
solution = puzzle['solution']
status = 'solved'
' <table class="center">\n',
' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, 'Channel')), #slack channel
' <table class="center">\n',
' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, 'Channel')), #slack channel
- ' <td>{}</td>\n'.format(elink(puzzle['url'], 'Puzzle')),
+ ' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>Additional Resources</td>\n',
' </tr>\n',
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>Additional Resources</td>\n',
' </tr>\n',
' <table class="center">\n',
' <tr>\n',
' <td>Round(s): {}</td>\n'.format(" ".join(round_url)), #round page on our site
' <table class="center">\n',
' <tr>\n',
' <td>Round(s): {}</td>\n'.format(" ".join(round_url)), #round page on our site
- ' <td>Tags: {}</td>\n'.format(" ".join(puzzle['tags'])), #add tags
+ ' <td>Tags: {}</td>\n'.format(" ".join(puzzle.get('tags',[]))), #add tags
' </tr>\n',
' <tr>\n',
' <td>Answer: {}</td>\n'.format(solution),
' </tr>\n',
' <tr>\n',
' <td>Answer: {}</td>\n'.format(solution),
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
- round_url = link(website + "_".join(rnd.split()) + "_round.html", puzzle['rounds'][0])
+ if 'rounds' in puzzle:
+ round_url = link(website + "_".join(rnd.split()) + "_round.html", puzzle['rounds'][0])
+ else:
+ round_url = ''
#assuming one round per puzzle for now
solved_code += [' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
#assuming one round per puzzle for now
solved_code += [' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
- ' <td>{}</td>\n'.format(elink(puzzle['url'], 'Puzzle')),
+ ' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td>{}</td>\n'.format(puzzle['solution']),
' <td>{}</td>\n'.format(round_url),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td>{}</td>\n'.format(puzzle['solution']),
' <td>{}</td>\n'.format(round_url),
- ' <td>{}</td>\n'.format("".join(puzzle['tags'])),
+ ' <td>{}</td>\n'.format("".join(puzzle.get('tags',[]))),
' </tr>\n']
for puzzle in unsolved_puzzles:
if puzzle['type'] == 'meta':
' </tr>\n']
for puzzle in unsolved_puzzles:
if puzzle['type'] == 'meta':
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
else:
meta = ''
slack_url = channel_url(puzzle['channel_id'])
- round_url = link(website + "_".join(rnd.split()) + "_round.html", puzzle['rounds'][0])
+ if 'rounds' in puzzle:
+ round_url = link(website + "_".join(rnd.split()) + "_round.html", puzzle['rounds'][0])
+ else:
+ round_url = ''
#assuming one round per puzzle for now
unsolved_code += [' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
#assuming one round per puzzle for now
unsolved_code += [' <tr>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
- ' <td>{}</td>\n'.format(elink(puzzle['url'], 'Puzzle')),
+ ' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td></td>\n',
' <td>{}</td>\n'.format(round_url),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
' <td>{}</td>\n'.format(link(website + "_".join(puzzle['name'].split()) + '.html', 'Overview')),
' <td></td>\n',
' <td>{}</td>\n'.format(round_url),
- ' <td>{}</td>\n'.format("".join(puzzle['tags'])),
+ ' <td>{}</td>\n'.format("".join(puzzle.get('tags',[]))),
' </tr>\n']
end = [' </tbody>\n',
' </table>\n',
' </tr>\n']
end = [' </tbody>\n',
' </table>\n',