X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=html_generator.py;h=de1265c147863589494b39148bdb929ad454d49d;hb=a6bcc3600c1b2e66757f18e6c4572987897088fb;hp=7d18e0a5738a111e9bd4acda97cccbb88d7d8338;hpb=5722eb825e11c817209e0ce4b29e8acfcb8b1e3d;p=turbot-web diff --git a/html_generator.py b/html_generator.py index 7d18e0a..de1265c 100644 --- a/html_generator.py +++ b/html_generator.py @@ -5,7 +5,7 @@ Created on Thu Jan 6 23:35:23 2022 @author: Avram Gottschlich """ """ -I copied several functions from your code; +I copied several functions from your code; if it's easier to refer to them rather than copying them that's absolutely fine This rewrites the html each time it is called @@ -14,20 +14,25 @@ that would be great Requires sorttable.js, which should be included """ -from turbot.channel import channel_url +import boto3 from boto3.dynamodb.conditions import Key website = "https://halibut.cworth.org/" #change this if we're using AWS or some other subdomain instead -def find_hunt_for_hunt_id(turb, hunt_id): +def channel_url(channel_id): + """Given a channel ID, return the URL for that channel.""" + + return "https://halibutthatbass.slack.com/archives/{}".format(channel_id) + +def find_hunt_for_hunt_id(table, hunt_id): """Given a hunt ID find the database item for that hunt Returns None if hunt ID is not found, otherwise a dictionary with all fields from the hunt's row in the table, (channel_id, active, hunt_id, name, url, sheet_url, etc.). """ - response = turb.table.get_item( + response = table.get_item( Key={ 'hunt_id': hunt_id, 'SK': 'hunt-{}'.format(hunt_id) @@ -38,10 +43,10 @@ def find_hunt_for_hunt_id(turb, hunt_id): else: return None -def hunt_puzzles_for_hunt_id(turb, hunt_id): +def hunt_puzzles_for_hunt_id(table, hunt_id): """Return all puzzles that belong to the given hunt_id""" - response = turb.table.query( + response = table.query( KeyConditionExpression=( Key('hunt_id').eq(hunt_id) & Key('SK').begins_with('puzzle-') @@ -59,16 +64,18 @@ def link(lin, text): #internal links, doesn't open new tab return '{}'.format(lin, text) -def hunt_info(turb, hunt): +def hunt_info(table, hunt_id): """ - Retrieves list of rounds, puzzles for the given hunt + Retrieves list of rounds, puzzles for the given hunt """ + + hunt = find_hunt_for_hunt_id(table, hunt_id) + name = hunt["name"] - hunt_id = hunt["hunt_id"] channel_id = hunt["channel_id"] - - puzzles = hunt_puzzles_for_hunt_id(turb, hunt_id) - + + puzzles = hunt_puzzles_for_hunt_id(table, hunt_id) + rounds = set() for puzzle in puzzles: if "rounds" not in puzzle: @@ -77,7 +84,7 @@ def hunt_info(turb, hunt): rounds.add(rnd) rounds = list(rounds) rounds.sort() - + return puzzles, rounds def round_stat(rnd, puzzles): @@ -90,7 +97,7 @@ def round_stat(rnd, puzzles): meta_solved = 0 for puzzle in puzzles: if "rounds" not in puzzle: - continue + continue if rnd in puzzle["rounds"]: if puzzle['type'] == 'meta': metas.append(puzzle) @@ -107,9 +114,9 @@ def round_stat(rnd, puzzles): unsolved_puzzles = sorted(unsolved_puzzles, key = lambda i: i['name']) rnd_puzzles = metas + unsolved_puzzles + solved_puzzles return puzzle_count, solved_count, rnd_puzzles, meta_solved, len(metas) - - - + + + def overview(puzzles, rounds): #big board, main page. saves as index.html start = ['\n', @@ -155,7 +162,7 @@ def overview(puzzles, rounds): '

Puzzles: {}/{}

\n'.format(solved_count, puzzle_count), '

Metas: {}/{}

\n'.format(meta_solved, metas), ' \n'] - + expanding += [ '