From f365902ad39350de389eb66568be6dad4065f7ed Mon Sep 17 00:00:00 2001 From: Kl0ven Date: Fri, 3 Feb 2023 16:31:40 +0100 Subject: [PATCH] fix(toolchain): use querydict all the way --- admin_action_tools/tests/unit/test_toolchain.py | 2 +- admin_action_tools/toolchain.py | 14 +++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/admin_action_tools/tests/unit/test_toolchain.py b/admin_action_tools/tests/unit/test_toolchain.py index 3fd42e6..687c4a3 100644 --- a/admin_action_tools/tests/unit/test_toolchain.py +++ b/admin_action_tools/tests/unit/test_toolchain.py @@ -61,4 +61,4 @@ def test_toolchain_querydict(self): toolchain = ToolChain(request) res = toolchain._ToolChain__clean_data(data, {}) - self.assertEqual(res["data"], {"a": ["1", "2", "3"]}) + self.assertEqual(res["data"], "a=1&a=2&a=3") diff --git a/admin_action_tools/toolchain.py b/admin_action_tools/toolchain.py index 450f4fb..c3511c9 100644 --- a/admin_action_tools/toolchain.py +++ b/admin_action_tools/toolchain.py @@ -93,7 +93,7 @@ def set_tool(self, tool_name: str, data: dict, metadata=None) -> None: def get_tool(self, tool_name: str) -> Tuple[Optional[dict], Optional[dict]]: tool = self.data.get(tool_name, {}) - return tool.get("data"), tool.get("metadata") + return QueryDict(tool.get("data")), tool.get("metadata") def clear_tool_chain(self): self.session.pop(self.name, None) @@ -130,19 +130,11 @@ def get_next_step(self, tool_name: str) -> ToolAction: return ToolAction.INIT def __clean_data(self, data: QueryDict, metadata): - new_data = data.dict() + new_data = data.copy() new_data.pop("csrfmiddlewaretoken", None) - cleaned_data = self.__process_query_dict(new_data, data) metadata = metadata or {} - return {"data": cleaned_data, "metadata": metadata} - - def __process_query_dict(self, new_data: dict, data: QueryDict): - for key in new_data: - old_field = data.getlist(key) - if len(old_field) > 1: - new_data[key] = old_field - return new_data + return {"data": new_data.urlencode(), "metadata": metadata} def get_history(self): return self.data["history"]