misc: change get_cells to return a queryset instead of a list (#17645)

This commit is contained in:
Frédéric Péters 2018-01-08 16:46:22 +01:00
parent 6e461b07a9
commit e887f6185a
2 changed files with 8 additions and 14 deletions

View File

@ -392,14 +392,9 @@ class CellBase(models.Model):
return cell_types
@classmethod
def get_cells(cls, cell_filter=None, **kwargs):
"""Returns the list of cells of various classes matching **kwargs"""
cells = []
for cell in cls.objects.filter(**kwargs).order_by('order').select_subclasses():
if cell_filter and not cell_filter(cell):
continue
cells.append(cell)
return cells
def get_cells(cls, **kwargs):
"""Returns a queryset of cells of various classes matching **kwargs"""
return cls.objects.filter(**kwargs).order_by('order').select_subclasses()
def get_reference(self):
"Returns a string that can serve as a unique reference to a cell"""

View File

@ -215,9 +215,10 @@ def skeleton(request):
pages = selected_page.get_parents_and_self()
combo_template = settings.COMBO_PUBLIC_TEMPLATES[selected_page.template_name]
cells = list(cells)
extend_with_parent_cells(cells)
cell_with_badges = CellBase.get_cells(cell_filter=lambda x: bool(x.get_badge))
cell_with_badges = [x for x in CellBase.get_cells() if bool(x.get_badge)]
ctx = {
'page': selected_page,
'page_cells': cells,
@ -348,10 +349,10 @@ def publish_page(request, page, status=200, template_name=None):
if page.redirect_url:
return HttpResponseRedirect(page.get_redirect_url())
cells = CellBase.get_cells(page_id=page.id)
cells = list(CellBase.get_cells(page_id=page.id))
extend_with_parent_cells(cells)
cells = [x for x in cells if x.is_visible(user=request.user)]
cell_with_badges = CellBase.get_cells(cell_filter=lambda x: bool(x.get_badge))
cell_with_badges = [x for x in CellBase.get_cells() if bool(x.get_badge)]
ctx = {
'check_badges': bool(cell_with_badges),
@ -385,9 +386,7 @@ def error404(request, *args, **kwargs):
def menu_badges(request):
context = {'request': request}
page_ids = request.GET.getlist('page[]')
cells = CellBase.get_cells(
cell_filter=lambda x: bool(x.get_badge),
page_id__in=page_ids)
cells = [x for x in CellBase.get_cells(page_id__in=page_ids) if bool(x.get_badge)]
badges = {}
for cell in cells:
if cell.page_id in badges: