From: Carl Worth Date: Sun, 27 Dec 2020 19:25:03 +0000 (-0800) Subject: Rework find_hunt_for_channel to return a hunt dictionary X-Git-Url: https://git.cworth.org/git?p=turbot;a=commitdiff_plain;h=13a4f1596e72f847571c2bb42fd29064a36a658b Rework find_hunt_for_channel to return a hunt dictionary It's going to be most convenient to return hunt and puzzle dictionaries that contain all entries from the database, (rather than a hard-coded tuple which is likely to not contain every piece of data we'll eventually want to have). --- diff --git a/turbot/interaction.py b/turbot/interaction.py index f69afe0..bef4f42 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -250,12 +250,16 @@ def find_hunt_for_channel(turb, channel_id, channel_name): This works whether the original channel is a primary hunt channel, or if it is one of the channels of a puzzle belonging to the hunt. - Returns a tuple of (hunt_name, hunt_id) or (None, None).""" + Returns None if channel does not belong to a hunt, otherwise a + dictionary with all fields from the hunt's row in the table, + (channel_id, active_, hun_id, name, url, sheet_url, etc.). + + """ (hunt, _) = channel_is_hunt(turb, channel_id) if hunt: - return (hunt['hunt_id'], hunt['name']) + return hunt # So we're not a hunt channel, let's look to see if we are a # puzzle channel with a hunt-id prefix. @@ -270,9 +274,9 @@ def find_hunt_for_channel(turb, channel_id, channel_name): if 'Items' in response and len(response['Items']): item = response['Items'][0] - return (item['hunt_id'], item['name']) + return item - return (None, None) + return None def puzzle(turb, body, args): """Implementation of the /puzzle command @@ -284,23 +288,23 @@ def puzzle(turb, body, args): channel_name = body['channel_name'][0] trigger_id = body['trigger_id'][0] - (hunt_id, hunt_name) = find_hunt_for_channel(turb, - channel_id, - channel_name) + hunt = find_hunt_for_channel(turb, + channel_id, + channel_name) - if not hunt_id: + if not hunt: return bot_reply("Sorry, this channel doesn't appear to " + "be a hunt or puzzle channel") view = { "type": "modal", "private_metadata": json.dumps({ - "hunt_id": hunt_id, + "hunt_id": hunt['hunt_id'], }), "title": {"type": "plain_text", "text": "New Puzzle"}, "submit": { "type": "plain_text", "text": "Create" }, "blocks": [ - section_block(text_block("*For {}*".format(hunt_name))), + section_block(text_block("*For {}*".format(hunt['name']))), input_block("Puzzle name", "name", "Name of the puzzle"), input_block("Puzzle URL", "url", "External URL of puzzle", optional=True)