From 0b5db467460da1a487675e7a64580e46189ecd64 Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Mon, 31 Jul 2023 10:38:01 +0200 Subject: [PATCH 1/2] Fix for a key error problem in speaker create --- openslides_backend/action/actions/speaker/create.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openslides_backend/action/actions/speaker/create.py b/openslides_backend/action/actions/speaker/create.py index 58970f931..b1584530f 100644 --- a/openslides_backend/action/actions/speaker/create.py +++ b/openslides_backend/action/actions/speaker/create.py @@ -94,6 +94,7 @@ def update_instance(self, instance: Dict[str, Any]) -> Dict[str, Any]: speaker = los[index] if ( speaker.get("point_of_order") + and speaker.get("point_of_order_category_id") and categories[speaker["point_of_order_category_id"]]["rank"] <= new_speaker_rank ): From 9dd4dd9d494b3a1f3073aea66329bcc2ec6ad307 Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Mon, 31 Jul 2023 10:52:14 +0200 Subject: [PATCH 2/2] Add test for the key error problem --- tests/system/action/speaker/test_create.py | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/tests/system/action/speaker/test_create.py b/tests/system/action/speaker/test_create.py index 424eb403f..168f29afe 100644 --- a/tests/system/action/speaker/test_create.py +++ b/tests/system/action/speaker/test_create.py @@ -648,3 +648,59 @@ def test_create_category_weights_with_ranks(self) -> None: ) self.assert_model_exists("speaker/3", {"weight": 4}) self.assert_model_exists("speaker/4", {"weight": 5}) + + def test_create_category_key_error_problem(self) -> None: + self.set_models( + { + "meeting/1": { + "name": "name_asdewqasd", + "is_active_in_organization_id": 1, + "list_of_speakers_enable_point_of_order_categories": True, + "list_of_speakers_enable_point_of_order_speakers": True, + "point_of_order_category_ids": [2, 3, 5], + }, + "user/1": { + "meeting_ids": [1], + }, + "point_of_order_category/2": { + "rank": 2, + "meeting_id": 1, + }, + "point_of_order_category/3": { + "rank": 3, + "meeting_id": 1, + }, + "point_of_order_category/5": { + "rank": 5, + "meeting_id": 1, + }, + "speaker/1": { + "weight": 1, + "point_of_order": True, + "list_of_speakers_id": 23, + "meeting_id": 1, + }, + "list_of_speakers/23": {"speaker_ids": [1], "meeting_id": 1}, + } + ) + response = self.request( + "speaker.create", + { + "user_id": 1, + "list_of_speakers_id": 23, + "point_of_order": True, + "point_of_order_category_id": 3, + }, + ) + self.assert_status_code(response, 200) + self.assert_model_exists( + "speaker/2", + { + "user_id": 1, + "list_of_speakers_id": 23, + "point_of_order": True, + "point_of_order_category_id": 3, + "weight": 1, + }, + ) + self.assert_model_exists("speaker/1", {"weight": 2})