Projet

Général

Profil

0002-cells-better-perfs-on-invalid-cells-report-40252.patch

Lauréline Guérin, 27 mars 2020 18:02

Télécharger (3,2 ko)

Voir les différences:

Subject: [PATCH 2/7] cells: better perfs on invalid cells report (#40252)

 combo/data/models.py   | 5 ++++-
 combo/manager/views.py | 3 ++-
 tests/test_public.py   | 4 ++--
 3 files changed, 8 insertions(+), 4 deletions(-)
combo/data/models.py
688 688
        return cell_types
689 689

  
690 690
    @classmethod
691
    def get_cells(cls, cell_filter=None, skip_cell_cache=False, prefetch_validity_info=False, select_related=None, **kwargs):
691
    def get_cells(cls, cell_filter=None, skip_cell_cache=False, prefetch_validity_info=False, select_related=None, load_contenttypes=False, **kwargs):
692 692
        """Returns the list of cells of various classes matching **kwargs"""
693 693
        cells = []
694 694
        pages = []
......
712 712
                    break
713 713
            else:
714 714
                cell_classes = [get_cell_class(x) for x in cell_types]
715
        if load_contenttypes:
716
            # populate ContentType cache
717
            ContentType.objects.get_for_models(*cell_classes)
715 718
        for klass in cell_classes:
716 719
            if klass is None:
717 720
                continue
combo/manager/views.py
97 97
    invalid_cells = CellBase.get_cells(
98 98
        select_related={'__all__': ['page']},
99 99
        page__snapshot__isnull=True,
100
        validity_info__invalid_since__isnull=False)
100
        validity_info__invalid_since__isnull=False,
101
        load_contenttypes=True)
101 102
    invalid_cells = [c for c in invalid_cells if c.placeholder and not c.placeholder.startswith('_')]
102 103
    invalid_cells.sort(key=attrgetter('page.order', 'page.pk', 'order'))
103 104
    context = {
tests/test_public.py
181 181
        assert resp.text.count('BAR2FOO') == 1
182 182
        queries_count_third = len(ctx.captured_queries)
183 183
        # +2 for validity info of parent page
184
        assert queries_count_third == queries_count_second + 2
184
        assert queries_count_third == queries_count_second + 1
185 185

  
186 186
    with CaptureQueriesContext(connection) as ctx:
187 187
        resp = app.get('/second/third/fourth/', status=200)
......
189 189
        assert resp.text.count('BAR2FOO') == 1
190 190
        queries_count_fourth = len(ctx.captured_queries)
191 191
        # +1 for get_parents_and_self()
192
        assert queries_count_fourth == queries_count_second + 2 + 1
192
        assert queries_count_fourth == queries_count_second + 1 + 1
193 193

  
194 194
    # check footer doesn't get duplicated in real index children
195 195
    page6 = Page(title='Sixth', slug='sixth', template_name='standard', parent=page_index)
196
-