perfs: refactor get_badges (#21052)
This commit is contained in:
parent
f80eb20c4f
commit
8c4fa059fc
|
@ -133,6 +133,15 @@ def extend_with_parent_cells(cells):
|
|||
cells[idx:idx+1] = cell.get_cells()
|
||||
|
||||
|
||||
def should_check_badges():
|
||||
check_badges = False
|
||||
for klass in CellBase.get_cell_classes(lambda x: bool(x.get_badge)):
|
||||
check_badges = klass.objects.all().exists()
|
||||
if check_badges:
|
||||
break
|
||||
return check_badges
|
||||
|
||||
|
||||
def skeleton(request):
|
||||
# Skeleton rendering is used to dynamically produce base templates to use
|
||||
# in other applications, based on configured combo cells.
|
||||
|
@ -217,14 +226,13 @@ def skeleton(request):
|
|||
combo_template = settings.COMBO_PUBLIC_TEMPLATES[selected_page.template_name]
|
||||
extend_with_parent_cells(cells)
|
||||
|
||||
cell_with_badges = CellBase.get_cells(cell_filter=lambda x: bool(x.get_badge))
|
||||
ctx = {
|
||||
'page': selected_page,
|
||||
'page_cells': cells,
|
||||
'pages': pages,
|
||||
'request': request,
|
||||
'render_skeleton': True,
|
||||
'check_badges': bool(cell_with_badges),
|
||||
'check_badges': should_check_badges(),
|
||||
'site_base': request.build_absolute_uri('/')[:-1],
|
||||
}
|
||||
|
||||
|
@ -351,10 +359,9 @@ def publish_page(request, page, status=200, template_name=None):
|
|||
cells = 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))
|
||||
|
||||
ctx = {
|
||||
'check_badges': bool(cell_with_badges),
|
||||
'check_badges': should_check_badges(),
|
||||
'page': page,
|
||||
'page_cells': cells,
|
||||
'pages': pages,
|
||||
|
@ -385,9 +392,9 @@ 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 = []
|
||||
for klass in CellBase.get_cell_classes(lambda x: bool(x.get_badge)):
|
||||
cells.extend(klass.objects.filter(page_id__in=page_ids))
|
||||
badges = {}
|
||||
for cell in cells:
|
||||
if cell.page_id in badges:
|
||||
|
|
Loading…
Reference in New Issue