From e36996423f2cecca7c1fa3660fe727aa3a8a6d28 Mon Sep 17 00:00:00 2001 From: Aurelien Bompard Date: Mar 02 2017 08:47:49 +0000 Subject: Merge #330 `Don't try to display widgets that have been deactivated or removed` --- diff --git a/hubs/models.py b/hubs/models.py index 3464f5b..2b7b6d5 100644 --- a/hubs/models.py +++ b/hubs/models.py @@ -263,13 +263,15 @@ class Hub(BASE): @property def left_widgets(self): return sorted( - [w for w in self.widgets if w.left], + [w for w in self.widgets + if w.plugin in hubs.widgets.registry and w.left], key=lambda w: w.index) @property def right_widgets(self): return sorted( - [w for w in self.widgets if not w.left], + [w for w in self.widgets + if w.plugin in hubs.widgets.registry and not w.left], key=lambda w: w.index) @property diff --git a/hubs/tests/test_models.py b/hubs/tests/test_models.py index deeb258..66c1488 100644 --- a/hubs/tests/test_models.py +++ b/hubs/tests/test_models.py @@ -154,7 +154,14 @@ class ModelTest(hubs.tests.APPTest): username=username, visited_hub=hub) - - - - + def test_removed_widget(self): + hub = hubs.models.Hub.get("ralph") + widget = hubs.models.Widget( + hub=hub, plugin="does-not-exist", + left=True, index=-1, _config="{}") + self.session.add(widget) + self.assertNotIn( + "does-not-exist", [w.plugin for w in hub.left_widgets]) + widget.left = False + self.assertNotIn( + "does-not-exist", [w.plugin for w in hub.right_widgets])