Projet

Général

Profil

0004-general-use-selected-cell-template-to-render-cell-55.patch

Frédéric Péters, 23 juillet 2021 16:14

Télécharger (2,29 ko)

Voir les différences:

Subject: [PATCH 4/5] general: use selected cell template to render cell
 (#55792)

 combo/data/models.py |  4 ++++
 tests/test_cells.py  | 26 ++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)
combo/data/models.py
1136 1136
        if self.default_template_name:
1137 1137
            base_template_name = os.path.basename(self.default_template_name)
1138 1138
            template_names.append(self.default_template_name)
1139
        if self.template_name:
1140
            cell_templates = settings.COMBO_CELL_TEMPLATES.get(self.get_cell_type_str()) or {}
1141
            selected_template_infos = cell_templates.get(self.template_name) or {}
1142
            template_names.append(selected_template_infos.get('template'))
1139 1143
        if self.slug:
1140 1144
            template_names.append('combo/cells/%s/%s' % (self.slug, base_template_name))
1141 1145
        template_names.reverse()
tests/test_cells.py
421 421
    assert cell.render(ctx).strip() == '<p>foobar</p>'
422 422

  
423 423

  
424
def test_extra_template():
425
    page = Page(title='example page', slug='example-page')
426
    page.save()
427

  
428
    cell = TextCell()
429
    cell.page = page
430
    cell.text = '<p>foobar</p>'
431
    cell.order = 0
432
    cell.save()
433

  
434
    ctx = {}
435

  
436
    templates_settings = [settings.TEMPLATES[0].copy()]
437
    templates_settings[0]['DIRS'] = ['%s/templates-1' % os.path.abspath(os.path.dirname(__file__))]
438
    with override_settings(
439
        COMBO_CELL_TEMPLATES={
440
            'data_textcell': {'extra': {'label': 'Extra', 'template': 'combo/cells/foobar/text-cell.html'}}
441
        },
442
        TEMPLATES=templates_settings,
443
    ):
444
        cell.slug = ''
445
        cell.template_name = 'extra'
446
        cell.save()
447
        assert cell.render(ctx).strip() == '<div class="XXX"><p>foobar</p></div>'
448

  
449

  
424 450
def mocked_request(*args, **kwargs):
425 451
    pass
426 452

  
427
-