]> git.cworth.org Git - turbot/commitdiff
Rework find_hunt_for_channel to return a hunt dictionary
authorCarl Worth <cworth@cworth.org>
Sun, 27 Dec 2020 19:25:03 +0000 (11:25 -0800)
committerCarl Worth <cworth@cworth.org>
Sun, 27 Dec 2020 20:18:41 +0000 (12:18 -0800)
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).

turbot/interaction.py

index f69afe0168504990c069b26d00a64f4396ea2b34..bef4f42ee7ad52200fa9b10d63abf59dd4d6f802 100644 (file)
@@ -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)