From 2bd06c348bee608123b9026c092c9c09f61dc773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 7 Apr 2019 19:45:09 +0200 Subject: [PATCH] misc: don't crash when cell cache refers to unknown cell types (#32046) --- combo/data/library.py | 2 +- combo/data/models.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/combo/data/library.py b/combo/data/library.py index 85482906..6a403024 100644 --- a/combo/data/library.py +++ b/combo/data/library.py @@ -29,7 +29,7 @@ class Library(object): return self.classes_by_content_str.values() def get_cell_class(self, content_type_str): - return self.classes_by_content_str[content_type_str] + return self.classes_by_content_str.get(content_type_str) def register_cell_class(self, klass): self.classes_by_content_str[klass.get_cell_type_str()] = klass diff --git a/combo/data/models.py b/combo/data/models.py index dc141450..692a1c6a 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -586,6 +586,8 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)): else: cell_classes = [get_cell_class(x) for x in cell_types] for klass in cell_classes: + if klass is None: + continue if cell_filter and not cell_filter(klass): continue cells.extend(klass.objects.filter(**kwargs)) @@ -600,9 +602,8 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)): def get_cell(cls, reference, **kwargs): """Returns the cell matching reference, and eventual **kwargs""" content_id, cell_id = reference.split('-') - try: - klass = get_cell_class(content_id) - except KeyError: + klass = get_cell_class(content_id) + if klass is None: raise ObjectDoesNotExist() return klass.objects.get(id=cell_id, **kwargs)