]> git.cworth.org Git - turbot/commitdiff
Don't put an attribute into the database for 'url' that is left blank
authorCarl Worth <cworth@cworth.org>
Thu, 31 Dec 2020 18:29:54 +0000 (11:29 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 31 Dec 2020 19:07:24 +0000 (12:07 -0700)
The URL field, (for either a hunt or a puzzle), is an optional
parameter, (the user creating the hunt or puzzle may or may not
provide a URL). Immediately prior to this commit, if a user left the
URL field blank, the submission handler was receiving a value of None
and inserting that as an attribute in the database.

This was problematic as subsequent code, (such as sheet creation),
would be prepared for an item to have no url key at all, but was not
prepared for the key to be present but for the value to be empty.

We fix this in this commit by explicitly _not_ inserting a None value
for url as an attribute in the database item, (instead, not supplying
a url attribute at all).

turbot/interaction.py

index 8f94a064071674d75dc1a039ac2d273b2a72e33b..bb4b868179863d259c53044c3789667c95548a71 100644 (file)
@@ -167,17 +167,17 @@ def new_hunt_submission(turb, payload, metadata):
     # Insert the newly-created hunt into the database
     # (leaving it as non-active for now until the channel-created handler
     #  finishes fixing it up with a sheet and a companion table)
-    turb.table.put_item(
-        Item={
-            "PK": "hunt-{}".format(hunt_id),
-            "SK": "hunt-{}".format(hunt_id),
-            "hunt_id": hunt_id,
-            "channel_id": channel_id,
-            "active": False,
-            "name": name,
-            "url": url
-        }
-    )
+    item={
+        "PK": "hunt-{}".format(hunt_id),
+        "SK": "hunt-{}".format(hunt_id),
+        "hunt_id": hunt_id,
+        "channel_id": channel_id,
+        "active": False,
+        "name": name,
+    }
+    if url:
+        item['url'] = url
+    turb.table.put_item(Item=item)
 
     # Invite the initiating user to the channel
     turb.slack_client.conversations_invite(channel=channel_id, users=user_id)
@@ -400,18 +400,18 @@ def puzzle_submission(turb, payload, metadata):
     channel_id = response['channel']['id']
 
     # Insert the newly-created puzzle into the database
-    turb.table.put_item(
-        Item={
-            "PK": "hunt-{}".format(hunt_id),
-            "SK": "puzzle-{}".format(puzzle_id),
-            "puzzle_id": puzzle_id,
-            "channel_id": channel_id,
-            "solution": [],
-            "status": 'unsolved',
-            "name": name,
-            "url": url,
-        }
-    )
+    item={
+        "PK": "hunt-{}".format(hunt_id),
+        "SK": "puzzle-{}".format(puzzle_id),
+        "puzzle_id": puzzle_id,
+        "channel_id": channel_id,
+        "solution": [],
+        "status": 'unsolved',
+        "name": name,
+    }
+    if url:
+        item['url'] = url
+    turb.table.put_item(Item=item)
 
     return lambda_ok