general: use selected cell template to render cell (#55792)

This commit is contained in:
Frédéric Péters 2021-07-23 13:58:59 +02:00
parent 8fe4109d3f
commit 7942c379ca
2 changed files with 31 additions and 0 deletions

View File

@ -1136,6 +1136,11 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)):
if self.default_template_name:
base_template_name = os.path.basename(self.default_template_name)
template_names.append(self.default_template_name)
if self.template_name:
cell_templates = settings.COMBO_CELL_TEMPLATES.get(self.get_cell_type_str()) or {}
selected_template_infos = cell_templates.get(self.template_name) or {}
if 'template' in selected_template_infos:
template_names.append(selected_template_infos.get('template'))
if self.slug:
template_names.append('combo/cells/%s/%s' % (self.slug, base_template_name))
template_names.reverse()

View File

@ -421,6 +421,32 @@ def test_variant_templates():
assert cell.render(ctx).strip() == '<p>foobar</p>'
def test_extra_template():
page = Page(title='example page', slug='example-page')
page.save()
cell = TextCell()
cell.page = page
cell.text = '<p>foobar</p>'
cell.order = 0
cell.save()
ctx = {}
templates_settings = [settings.TEMPLATES[0].copy()]
templates_settings[0]['DIRS'] = ['%s/templates-1' % os.path.abspath(os.path.dirname(__file__))]
with override_settings(
COMBO_CELL_TEMPLATES={
'data_textcell': {'extra': {'label': 'Extra', 'template': 'combo/cells/foobar/text-cell.html'}}
},
TEMPLATES=templates_settings,
):
cell.slug = ''
cell.template_name = 'extra'
cell.save()
assert cell.render(ctx).strip() == '<div class="XXX"><p>foobar</p></div>'
def mocked_request(*args, **kwargs):
pass