X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Fevents.py;fp=turbot%2Fevents.py;h=2f096b276ccae2e97faef2238f442de47c356b66;hb=f0f7704495e3a7340cf09e561ecebd885875674f;hp=ccddc973a1db502e7381c20f068d73c29f23313e;hpb=87a5f4873bdf8cfa661ae126f279da4dd9010ac7;p=turbot diff --git a/turbot/events.py b/turbot/events.py index ccddc97..2f096b2 100644 --- a/turbot/events.py +++ b/turbot/events.py @@ -53,7 +53,24 @@ def puzzle_block(puzzle): return section_block(text_block(puzzle_text)) -def hunt_details_block(turb, hunt): +def round_blocks(round, puzzles): + + round_text = "*Round: {}*".format(round) + + blocks = [ + section_block(text_block(round_text)), + ] + + for puzzle in puzzles: + if 'rounds' not in puzzle: + continue + if round not in puzzle['rounds']: + continue + blocks.append(puzzle_block(puzzle)) + + return blocks + +def hunt_details_blocks(turb, hunt): name = hunt['name'] hunt_id = hunt['hunt_id'] channel_id = hunt['channel_id'] @@ -66,24 +83,44 @@ def hunt_details_block(turb, hunt): ) puzzles = response['Items'] + # Compute the set of rounds across all puzzles + rounds = set() + for puzzle in puzzles: + if 'rounds' not in puzzle: + continue + for round in puzzle['rounds']: + rounds.add(round) + hunt_text = "*<{}|{}>*".format(channel_url(channel_id), name) - return [ + blocks = [ section_block(text_block(hunt_text)), - *[puzzle_block(puzzle) for puzzle in puzzles], - divider_block() ] -def available_hunt_block(turb, hunt): + # Construct blocks for each round + for round in rounds: + blocks += round_blocks(round, puzzles) + + # Also blocks for any puzzles not in any round + stray_puzzles = [puzzle for puzzle in puzzles if 'rounds' not in puzzle] + if len(stray_puzzles): + stray_text = "*Puzzles with no asigned round*" + blocks.append(section_block(text_block(stray_text))) + for puzzle in stray_puzzles: + blocks.append(puzzle_block(puzzle)) + + blocks.append(divider_block()) + + return blocks + +def hunt_link_block(turb, hunt): name = hunt['name'] channel_id = hunt['channel_id'] hunt_link = "*<{}|{}>*".format(channel_url(channel_id), name) - return [ - section_block(text_block(hunt_link)), - ] + return section_block(text_block(hunt_link)), def home(turb, user_id): """Returns a view to be published as the turbot home tab for user_id @@ -107,9 +144,9 @@ def home(turb, user_id): continue if user_id in slack_channel_members(turb.slack_client, hunt['channel_id']): - my_hunt_blocks += hunt_details_block(turb, hunt) + my_hunt_blocks += hunt_details_blocks(turb, hunt) else: - available_hunt_blocks += available_hunt_block(turb, hunt) + available_hunt_blocks.append(hunt_link_block(turb, hunt)) if len(my_hunt_blocks): my_hunt_blocks = [