return "{}/{}/{}".format(WEBROOT, hunt['channel_id'], name)
+def internal_link(hunt, name):
+ """Returns a path for a link on this site."""
+ return "{}/{}".format(hunt['channel_id'], name)
+
def filename_from_name(name):
"""Returns a string derived from name, but with all spaces and slashes
replaced with underscores, (for making a clean filename)"""
expanding += [
' <div id="b{}" class="containerTab {}" style="display:none;">\n'.format(i, status),
' <span onclick="this.parentElement.style.display=\'none\'" class="closebtn">x</span>\n',
- ' <h2>{}</h2>\n'.format(link(hunt_file(hunt, filename_from_name(rnd)) + "_round.html", rnd)),
+ ' <h2>{}</h2>\n'.format(link(internal_link(hunt, filename_from_name(rnd)) + "_round.html", rnd)),
' <table class="sortable">\n',
' <tr>\n',
' <th><u>Puzzle</u></th>\n',
meta = ''
if puzzle['status'] == 'solved':
expanding += [' <tr class=\'solved\';>\n',
- ' <td>{}</td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", puzzle['name']+meta)),
+ ' <td>{}</td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", puzzle['name']+meta)),
' <td>{}</td>\n'.format(", ".join(puzzle['solution']).upper()),
' </tr>\n']
else:
expanding += [' <tr class=\'unsolved\';>\n',
- ' <td><b>{}</b></td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", puzzle['name']+meta)),
+ ' <td><b>{}</b></td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", puzzle['name']+meta)),
' <td></td>\n',
' </tr>\n']
expanding.append(' </table>\n')
' </head>\n',
' <body class="{}">\n'.format(status),
' <h1><b>{}</b></h1>\n'.format(rnd),
- ' <p>{}</p>\n'.format(link(hunt_file(hunt, "index") + ".html", 'Hunt Overview')),
+ ' <p>{}</p>\n'.format(link(internal_link(hunt, "index") + ".html", 'Hunt Overview')),
' <div>\n',
' <table class="center sortable">\n',
' <thead>\n',
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
- ' <td>{}</td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
+ ' <td>{}</td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
' <td>{}</td>\n'.format(", ".join(puzzle['solution']).upper()),
# ' <td></td>\n',
' <td>{}</td>\n'.format(", ".join(puzzle.get('tags',[]))),
' <td><b>{}</b></td>\n'.format(elink(slack_url, puzzle['name']+meta)),
' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
- ' <td>{}</td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
+ ' <td>{}</td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
' <td></td>\n',
# ' <td></td>\n',
' <td>{}</td>\n'.format(", ".join(puzzle.get('tags',[]))),
meta = ''
slack_url = channel_url(puzzle['channel_id'])
if 'rounds' in puzzle:
- round_url = [link(hunt_file(hunt, filename_from_name(rnd)) + "_round.html", rnd) for rnd in puzzle['rounds']]
+ round_url = [link(internal_link(hunt, filename_from_name(rnd)) + "_round.html", rnd) for rnd in puzzle['rounds']]
else:
round_url = ''
if puzzle['status'] == 'solved':
' <meta name="viewport" content="width=device-width, initial-scale=1">\n',
' <link rel="stylesheet" href="/individual.css">\n',
' <title>{}</title>\n'.format(name+meta),
- ' <p>{}</p>'.format(link(hunt_file(hunt, 'index') + ".html", 'Hunt Overview')),
+ ' <p>{}</p>'.format(link(internal_link(hunt, 'index') + ".html", 'Hunt Overview')),
'\n',
'</head>\n',
'<body class="{}">\n'.format(status),
' </div>\n'
' <body>\n',
' <h1><b>{}</b></h1>\n'.format('{} Puzzles').format(filt),
- ' <p>{}</p>\n'.format(link(hunt_file(hunt, 'index') + ".html", 'Hunt Overview')),
+ ' <p>{}</p>\n'.format(link(internal_link(hunt, 'index') + ".html", 'Hunt Overview')),
' <div>\n',
' <table class="center sortable">\n',
' <thead>\n',
meta = ''
slack_url = channel_url(puzzle['channel_id'])
if 'rounds' in puzzle:
- round_url = link(hunt_file(hunt, filename_from_name(puzzle['rounds'][0])) + "_round.html", puzzle['rounds'][0])
+ round_url = link(internal_link(hunt, filename_from_name(puzzle['rounds'][0])) + "_round.html", puzzle['rounds'][0])
else:
round_url = ''
#assuming one round per puzzle for now
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
- ' <td>{}</td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
+ ' <td>{}</td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
' <td>{}</td>\n'.format(", ".join(puzzle['solution']).upper()),
' <td>{}</td>\n'.format(round_url),
' <td>{}</td>\n'.format(", ".join(puzzle.get('tags',[]))),
meta = ''
slack_url = channel_url(puzzle['channel_id'])
if 'rounds' in puzzle:
- round_url = link(hunt_file(hunt, filename_from_name(puzzle['rounds'][0])) + "_round.html", puzzle['rounds'][0])
+ round_url = link(internal_link(hunt, filename_from_name(puzzle['rounds'][0])) + "_round.html", puzzle['rounds'][0])
else:
round_url = ''
#assuming one round per puzzle for now
' <td>{}</td>\n'.format(elink(slack_url, puzzle['name']+meta)),
' <td>{}</td>\n'.format(elink(puzzle.get('url',''), 'Puzzle')),
' <td>{}</td>\n'.format(elink(puzzle['sheet_url'], 'Sheet')),
- ' <td>{}</td>\n'.format(link(hunt_file(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
+ ' <td>{}</td>\n'.format(link(internal_link(hunt, filename_from_name(puzzle['name'])) + ".html", 'Overview')),
' <td></td>\n',
' <td>{}</td>\n'.format(round_url),
' <td>{}</td>\n'.format(", ".join(puzzle.get('tags',[]))),