X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Fhunt.py;h=2d4de5108b4e75f5694b817941d3e24a1a8cec10;hb=1af32409a8d60e9580a0873bd8b2fa3c676c37ee;hp=97712982fd32aa7afb4367a7b65ce0838f3c910f;hpb=268ef53019a9886ece748684e214158d6ae5cdb3;p=turbot diff --git a/turbot/hunt.py b/turbot/hunt.py index 9771298..2d4de51 100644 --- a/turbot/hunt.py +++ b/turbot/hunt.py @@ -41,6 +41,10 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[], limit_to_rounds=None): """Generate Slack blocks for a hunt + Returns a list of lists of blocks, (broken up by round so that + the receiver should do one Slack post for each entry in the + outer array. + The hunt argument should be a dictionary as returned from the database. @@ -112,17 +116,20 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[], hunt_text += " matching {}".format(" AND ".join(quoted_terms)) blocks = [ - accessory_block( - section_block(text_block(hunt_text)), - button_block("✏", "edit_hunt", hunt_id) - ) + [ + accessory_block( + section_block(text_block(hunt_text)), + button_block("✏", "edit_hunt", hunt_id) + ) + ] ] + block = blocks[0] if not len(puzzles): text = "No puzzles found." if puzzle_status != 'all': text += ' (Consider searching for "all" puzzles?)' - blocks += [ + block += [ section_block(text_block(text)) ] @@ -132,10 +139,12 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[], continue # If we're only displaying one round the round header is redundant if limit_to_rounds and len(limit_to_rounds) == 1: - blocks += round_blocks(round, puzzles, omit_header=True) + block += round_blocks(round, puzzles, omit_header=True) else: - blocks += round_blocks(round, puzzles) - blocks.append(divider_block()) + block += round_blocks(round, puzzles) + block.append(divider_block()) + blocks.append([]) + block = blocks[-1] # Also blocks for any puzzles not in any round stray_puzzles = [puzzle for puzzle in puzzles if 'rounds' not in puzzle] @@ -147,10 +156,30 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[], # to rounds but specifically the round of unassigned puzzles if len(stray_puzzles) and not limit_to_rounds: stray_text = "*Puzzles with no assigned round*" - blocks.append(section_block(text_block(stray_text))) + block.append(section_block(text_block(stray_text))) for puzzle in stray_puzzles: - blocks += puzzle_blocks(puzzle) + block += puzzle_blocks(puzzle) - blocks.append(divider_block()) + block.append(divider_block()) return blocks + +def hunt_update_topic(turb, hunt): + + channel_id = hunt['channel_id'] + + topic = '' + + url = hunt.get('url', None) + if url: + topic += "<{}|Hunt website> ".format(url) + + state = hunt.get('state', None) + if state: + topic += state + + # Slack only allows 250 characters for a topic + if len(topic) > 250: + topic = topic[:247] + "..." + turb.slack_client.conversations_setTopic(channel=channel_id, + topic=topic)