Projet

Général

Profil

0001-manager-don-t-crash-on-buggy-cells-19503.patch

Frédéric Péters, 17 octobre 2017 20:13

Télécharger (2,4 ko)

Voir les différences:

Subject: [PATCH] manager: don't crash on buggy cells (#19503)

 combo/public/templatetags/combo.py |  4 ++++
 tests/test_manager.py              | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)
combo/public/templatetags/combo.py
88 88
        return cell.render(context)
89 89
    except NothingInCacheException:
90 90
        return template.loader.get_template('combo/deferred-cell.html').render(context)
91
    except:
92
        if context.get('placeholder_search_mode'):
93
            return ''
94
        raise
91 95

  
92 96
@register.tag
93 97
def skeleton_extra_placeholder(parser, token):
tests/test_manager.py
1 1
import base64
2
import json
2 3
import os
3 4
import re
4 5
import StringIO
......
7 8
import mock
8 9

  
9 10
from django.core.files.storage import default_storage
11
from django.core.urlresolvers import reverse
10 12
from django.conf import settings
11 13
from django.contrib.auth.models import User
14
from django.template import TemplateSyntaxError
12 15
from django.test import override_settings
13 16

  
14 17
import pytest
......
622 625
    cell.save()
623 626
    resp = app.get('/manage/pages/%s/' % page.id)
624 627
    assert re.findall('data-placeholder-key="(.*)">', resp.body) == ['content', 'foobar', 'footer']
628

  
629
def test_page_discover_placeholder_with_error_cells(app, admin_user):
630
    page = Page(title='One', slug='one', template_name='standard')
631
    page.save()
632
    cell = JsonCell(page=page, placeholder='content', order=0, url='xx')
633
    cell.template_string = '{% xxx %}'
634
    cell.save()
635

  
636
    app = login(app)
637

  
638
    with mock.patch('combo.utils.requests.get') as requests_get:
639
        data = {'data': [{'url': 'xxx', 'text': 'xxx'}]}
640
        with pytest.raises(TemplateSyntaxError):
641
            cell.render({})
642

  
643
    resp = app.get('/manage/pages/%s/' % page.id)
644
    assert re.findall('data-placeholder-key="(.*)">', resp.body) == ['content', 'footer']
625
-