From a9f4ac01df4aca618a8e059f4eddcc4f80eb3a1f Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Fri, 7 Jan 2022 18:55:32 -0800 Subject: [PATCH] Convert the solution data structure back to a list, (but still avoid dupes.) The put_item call was not happy receiving a set object. So, instead of using one, we use a lits and just take care to not add any duplicates to the list. --- turbot/interaction.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/turbot/interaction.py b/turbot/interaction.py index 75ff299..86f438c 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -187,9 +187,9 @@ def edit_puzzle(turb, puzzle, trigger_id): solved = True solution_str = None - solution_set = puzzle.get("solution", set()) - if solution_set: - solution_str = ", ".join(solution_set) + solution_list = puzzle.get("solution", ()) + if solution_list: + solution_str = ", ".join(solution_list) view = { "type": "modal", @@ -280,12 +280,13 @@ def edit_puzzle_submission(turb, payload, metadata): puzzle['status'] = 'solved' else: puzzle['status'] = 'unsolved' - puzzle['solution'] = set() + puzzle['solution'] = () solution = state['solution']['solution']['value'] if solution: - puzzle['solution'] = { + # Construct a list from a set to avoid any duplicates + puzzle['solution'] = list({ sol.strip() for sol in solution.split(',') - } + }) # Verify that there's a solution if the puzzle is mark solved if puzzle['status'] == 'solved' and not puzzle['solution']: @@ -1044,7 +1045,7 @@ def new_puzzle_submission(turb, payload, metadata): if rounds: puzzle['rounds'] = rounds - puzzle['solution'] = set() + puzzle['solution'] = () puzzle['status'] = 'unsolved' # Create a channel for the puzzle @@ -1184,7 +1185,10 @@ def solved(turb, body, args): # Set the status and solution fields in the database puzzle['status'] = 'solved' - puzzle['solution'].add(args) + + # Don't append a duplicate solution + if args not in puzzle['solution']: + puzzle['solution'].append(args) if 'state' in puzzle: del puzzle['state'] turb.table.put_item(Item=puzzle) -- 2.43.0