misc: don't crash when cell cache refers to unknown cell types (#32046)

This commit is contained in:
Frédéric Péters 2019-04-07 19:45:09 +02:00
parent 8d9a03f57c
commit 2bd06c348b
2 changed files with 5 additions and 4 deletions

View File

@ -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

View File

@ -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)