misc: don't get concrete class when looking at placeholder emptiness (#17645)

This commit is contained in:
Frédéric Péters 2018-01-08 17:09:03 +01:00
parent e887f6185a
commit d736942516
2 changed files with 8 additions and 5 deletions

View File

@ -258,8 +258,8 @@ class Page(models.Model):
def is_visible(self, user=None):
return element_is_visible(self, user=user)
def get_cells(self):
return CellBase.get_cells(page_id=self.id)
def get_cells(self, **kwargs):
return CellBase.get_cells(page_id=self.id, **kwargs)
def get_serialized_page(self):
cells = [x for x in self.get_cells() if x.placeholder and not x.placeholder.startswith('_')]
@ -392,9 +392,12 @@ class CellBase(models.Model):
return cell_types
@classmethod
def get_cells(cls, **kwargs):
def get_cells(cls, concrete=True, **kwargs):
"""Returns a queryset of cells of various classes matching **kwargs"""
return cls.objects.filter(**kwargs).order_by('order').select_subclasses()
queryset = cls.objects.filter(**kwargs).order_by('order')
if not concrete:
return queryset
return queryset.select_subclasses()
def get_reference(self):
"Returns a string that can serve as a unique reference to a cell"""

View File

@ -219,4 +219,4 @@ def get_group(group_list, group_name):
@register.filter(name='is_empty_placeholder')
def is_empty_placeholder(page, placeholder_name):
return len([x for x in page.get_cells() if x.placeholder == placeholder_name]) == 0
return not page.get_cells(concrete=False).filter(placeholder=placeholder_name).exists()