Projet

Général

Profil

0001-form-don-t-fail-on-misconfigured-autocomplete-string.patch

Frédéric Péters, 01 décembre 2015 10:55

Télécharger (2,66 ko)

Voir les différences:

Subject: [PATCH] form: don't fail on misconfigured autocomplete string widgets
 (#9161)

 tests/test_form_pages.py | 24 ++++++++++++++++++++++++
 wcs/qommon/form.py       |  6 +++++-
 2 files changed, 29 insertions(+), 1 deletion(-)
tests/test_form_pages.py
2052 2052
        http_get_page.reset_mock()
2053 2053
        assert 'The form has been recorded' in resp.body
2054 2054
        assert 'class="value valid"' in resp.body
2055

  
2056
def test_form_string_field_autocomplete(pub):
2057
    formdef = create_formdef()
2058
    formdef.fields = [fields.StringField(id='0', label='string', type='string', required=False)]
2059
    formdef.fields[0].data_source = {'type': 'jsonp'}
2060
    formdef.store()
2061

  
2062
    # not filled completed, no call to .autocomplete
2063
    resp = get_app(pub).get('/test/')
2064
    assert not ').autocomplete({' in resp.body
2065

  
2066
    # straight URL
2067
    formdef.fields[0].data_source = {'type': 'jsonp', 'value': 'http://example.org'}
2068
    formdef.store()
2069
    resp = get_app(pub).get('/test/')
2070
    assert ').autocomplete({' in resp.body
2071
    assert 'http://example.org' in resp.body
2072

  
2073
    # URL from variable
2074
    formdef.fields[0].data_source = {'type': 'jsonp', 'value': '[site_url]'}
2075
    formdef.store()
2076
    resp = get_app(pub).get('/test/')
2077
    assert ').autocomplete({' in resp.body
2078
    assert 'http://example.net' in resp.body
wcs/qommon/form.py
1778 1778
        get_response().add_javascript(['jquery.js', 'jquery-ui.js'])
1779 1779
        get_response().add_css_include('../js/smoothness/jquery-ui-1.10.0.custom.min.css')
1780 1780

  
1781
        if '[' in self.url:
1781
        if self.url and '[' in self.url:
1782 1782
            vars = get_publisher().substitutions.get_context_variables()
1783 1783
            # skip variables that were not set (None)
1784 1784
            vars = dict((x, y) for x, y in vars.items() if y is not None)
......
1788 1788

  
1789 1789
        r = TemplateIO(html=True)
1790 1790
        r += WcsExtraStringWidget.render_content(self)
1791
        if not url:
1792
            # there's no autocomplete URL, get out now.
1793
            return r.getvalue()
1794

  
1791 1795
        r += htmltext("""
1792 1796
<script id="script_%(id)s">
1793 1797
$(function() {
1794
-