]> git.cworth.org Git - turbot/blobdiff - turbot/puzzle.py
Fix comment string for find_puzzle_for_sort_key
[turbot] / turbot / puzzle.py
index 1dbea5d74906c447b3e6b09df70758f4379389d5..3a0e312720aad3ad6c76c39abf89e36ab6691f8a 100644 (file)
@@ -7,11 +7,18 @@ import turbot.sheets
 import re
 
 def find_puzzle_for_sort_key(turb, hunt_id, sort_key):
-    """Given a hunt_id and puzzle_id, return that puzzle
+    """Given a hunt_id and sort_key, return that puzzle
 
-    Returns None if no puzzle with the given hunt_id and puzzle_id
+    Returns None if no puzzle with the given hunt_id and sort_key
     exists in the database, otherwise a dictionary with all fields
     from the puzzle's row in the database.
+
+    Note: The sort_key is a modified version of the puzzle_id, (used
+    to make metapuzzles appear in the ordering before non-metapuzzles).
+    If you've been handed a sort_key, then looking up a puzzle by
+    sort_key is the right thing to do. But if you instead have just
+    a puzzle_id, see find_puzzle_for_puzzle_id rather than trying
+    to convert the puzzle_id into a sort_key to use this function.
     """
 
     response = turb.table.get_item(
@@ -242,11 +249,21 @@ def puzzle_channel_topic(puzzle):
 def puzzle_channel_name(puzzle):
     """Compute the channel name for a puzzle"""
 
+    round = ''
+    if 'rounds' in puzzle:
+        round = '-' + puzzle_id_from_name(puzzle['rounds'][0])
+
+    meta = ''
+    if puzzle.get('type', 'plain') == 'meta':
+        meta = '-m'
+
     # Note: We don't use puzzle['puzzle_id'] here because we're keeping
     # that as a persistent identifier in the database. Instead we
     # create a new ID-like identifier from the current name.
-    channel_name = "{}-{}".format(
+    channel_name = "{}{}{}-{}".format(
         puzzle['hunt_id'],
+        round,
+        meta,
         puzzle_id_from_name(puzzle['name'])
     )
 
@@ -290,7 +307,7 @@ def puzzle_update_channel_and_sheet(turb, puzzle, old_puzzle=None):
         old_sheet_name = puzzle_sheet_name(old_puzzle)
 
     if sheet_name != old_sheet_name:
-        turbot.sheets.renameSheet(turb, puzzle['sheet_url'], sheet_name)
+        turbot.sheets.rename_spreadsheet(turb, puzzle['sheet_url'], sheet_name)
 
     # Compute the Slack channel name and set it if it has changed
     channel_name = puzzle_channel_name(puzzle)