From e35a6e53907f80796fffb8f04c304430de5b9a63 Mon Sep 17 00:00:00 2001 From: Rebecca Breu Date: Wed, 1 Sep 2021 15:47:55 +0200 Subject: [PATCH] Handle unknown item types while loading bee files Just in case we add new item types in future versions --- beeref/scene.py | 8 +++++++- tests/test_scene.py | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/beeref/scene.py b/beeref/scene.py index c0aa694..2856d93 100644 --- a/beeref/scene.py +++ b/beeref/scene.py @@ -412,7 +412,13 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene): while not self.items_to_add.empty(): data, selected = self.items_to_add.get() - cls = item_registry[data.pop('type')] + typ = data.pop('type') + cls = item_registry.get(typ) + if not cls: + # Just in case we add new item types in future versions + logger.warning(f'Encountered item of unknown type: {typ}') + cls = item_registry.get('text') + data['data'] = {'text': f'Item of unknown type: {typ}'} item = cls.create_from_data(**data) item.update_from_data(**data) self.addItem(item) diff --git a/tests/test_scene.py b/tests/test_scene.py index a49d5b0..656011d 100644 --- a/tests/test_scene.py +++ b/tests/test_scene.py @@ -1056,3 +1056,12 @@ def test_add_queued_items_selected(view): def test_add_queued_items_when_no_items(view): view.scene.add_queued_items() assert view.scene.items() == [] + + +def test_add_queued_items_ignores_unknown_type(view): + data = {'type': 'foo', 'z': 0.33, 'data': {'bar': 'baz'}} + view.scene.add_item_later(data, selected=False) + view.scene.add_queued_items() + assert len(view.scene.items()) == 1 + item = view.scene.items()[0] + assert item.toPlainText() == 'Item of unknown type: foo'