general: use selected cell template to render cell (#55792)
This commit is contained in:
parent
8fe4109d3f
commit
7942c379ca
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue