From e80df93e84e6e20933431a48d2c248fe663a3fa3 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 31 Dec 2020 11:29:54 -0700 Subject: [PATCH 1/1] Don't put an attribute into the database for 'url' that is left blank 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 | 46 +++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/turbot/interaction.py b/turbot/interaction.py index 8f94a06..bb4b868 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -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 -- 2.43.0