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']
)
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
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 = [