From: Carl Worth Date: Sat, 8 Jan 2022 02:55:32 +0000 (-0800) Subject: Convert the solution data structure back to a list, (but still avoid dupes.) X-Git-Url: https://git.cworth.org/git?p=turbot;a=commitdiff_plain;h=a9f4ac01df4aca618a8e059f4eddcc4f80eb3a1f 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. --- 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)