From 7299d1d835b02b8c7bfa35512ca5c81c2eb7cf10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Tue, 18 Feb 2020 13:55:18 +0100 Subject: [PATCH] cells: invalid cell report (#38009) --- combo/data/models.py | 8 ++++-- .../templates/combo/invalid_cell_report.html | 28 +++++++++++++++++++ .../manager/templates/combo/manager_home.html | 1 + combo/manager/urls.py | 1 + combo/manager/views.py | 14 ++++++++++ tests/test_manager.py | 23 +++++++++++++++ 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 combo/manager/templates/combo/invalid_cell_report.html diff --git a/combo/data/models.py b/combo/data/models.py index d3cb3b66..6ec77416 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -642,10 +642,11 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)): return cell_types @classmethod - def get_cells(cls, cell_filter=None, skip_cell_cache=False, prefetch_validity_info=False, **kwargs): + def get_cells(cls, cell_filter=None, skip_cell_cache=False, prefetch_validity_info=False, select_related=None, **kwargs): """Returns the list of cells of various classes matching **kwargs""" cells = [] pages = [] + select_related = select_related or {} if 'page' in kwargs: pages = [kwargs['page']] elif 'page__in' in kwargs: @@ -670,7 +671,10 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)): continue if cell_filter and not cell_filter(klass): continue - cells.extend(klass.objects.filter(**kwargs)) + cells_queryset = klass.objects.filter(**kwargs) + if select_related: + cells_queryset = cells_queryset.select_related(*select_related) + cells.extend(cells_queryset) if prefetch_validity_info: validity_info_list = list(ValidityInfo.objects.select_related('content_type')) for cell in cells: diff --git a/combo/manager/templates/combo/invalid_cell_report.html b/combo/manager/templates/combo/invalid_cell_report.html new file mode 100644 index 00000000..7a0ff07b --- /dev/null +++ b/combo/manager/templates/combo/invalid_cell_report.html @@ -0,0 +1,28 @@ +{% extends "combo/manager_base.html" %} +{% load i18n %} + +{% block appbar %} +

{% trans 'Invalid cells' %}

+{% endblock %} + +{% block breadcrumb %} + {{ block.super }} + {% trans 'Anomaly report' %} +{% endblock %} + +{% block content %} +{% if object_list %} + +{% else %} +
+ {% trans "No invalid cell found." %} +
+{% endif %} +{% endblock %} diff --git a/combo/manager/templates/combo/manager_home.html b/combo/manager/templates/combo/manager_home.html index d158b260..bcdffd86 100644 --- a/combo/manager/templates/combo/manager_home.html +++ b/combo/manager/templates/combo/manager_home.html @@ -9,6 +9,7 @@