manager: don't crash on buggy cells (#19503)

This commit is contained in:
Frédéric Péters 2017-10-17 20:12:56 +02:00
parent 4036804500
commit 8bf25cfabd
2 changed files with 24 additions and 0 deletions

View File

@ -88,6 +88,10 @@ def render_cell(context, cell):
return cell.render(context)
except NothingInCacheException:
return template.loader.get_template('combo/deferred-cell.html').render(context)
except:
if context.get('placeholder_search_mode'):
return ''
raise
@register.tag
def skeleton_extra_placeholder(parser, token):

View File

@ -1,4 +1,5 @@
import base64
import json
import os
import re
import StringIO
@ -7,8 +8,10 @@ import urllib
import mock
from django.core.files.storage import default_storage
from django.core.urlresolvers import reverse
from django.conf import settings
from django.contrib.auth.models import User
from django.template import TemplateSyntaxError
from django.test import override_settings
import pytest
@ -622,3 +625,20 @@ def test_page_cell_placeholder(app, admin_user):
cell.save()
resp = app.get('/manage/pages/%s/' % page.id)
assert re.findall('data-placeholder-key="(.*)">', resp.body) == ['content', 'foobar', 'footer']
def test_page_discover_placeholder_with_error_cells(app, admin_user):
page = Page(title='One', slug='one', template_name='standard')
page.save()
cell = JsonCell(page=page, placeholder='content', order=0, url='xx')
cell.template_string = '{% xxx %}'
cell.save()
app = login(app)
with mock.patch('combo.utils.requests.get') as requests_get:
data = {'data': [{'url': 'xxx', 'text': 'xxx'}]}
with pytest.raises(TemplateSyntaxError):
cell.render({})
resp = app.get('/manage/pages/%s/' % page.id)
assert re.findall('data-placeholder-key="(.*)">', resp.body) == ['content', 'footer']