Fixed #24727 -- Prevented ClearableFileInput from masking exceptions on Python 2

This commit is contained in:
Berker Peksag 2016-02-14 23:28:26 +02:00
parent 7424ad0774
commit 043383e3f3
2 changed files with 40 additions and 1 deletions

View File

@ -372,7 +372,7 @@ class ClearableFileInput(FileInput):
"""
Return whether value is considered to be initial value.
"""
return bool(value and hasattr(value, 'url'))
return bool(value and getattr(value, 'url', False))
def get_template_substitution_values(self, value):
"""

View File

@ -105,3 +105,42 @@ class ClearableFileInputTest(WidgetTest):
name='myfile',
)
self.assertEqual(value, field)
def test_html_does_not_mask_exceptions(self):
"""
A ClearableFileInput should not mask exceptions produced while
checking that it has a value.
"""
@python_2_unicode_compatible
class FailingURLFieldFile(object):
@property
def url(self):
raise ValueError('Canary')
def __str__(self):
return 'value'
with self.assertRaisesMessage(ValueError, 'Canary'):
self.widget.render('myfile', FailingURLFieldFile())
def test_url_as_property(self):
@python_2_unicode_compatible
class URLFieldFile(object):
@property
def url(self):
return 'https://www.python.org/'
def __str__(self):
return 'value'
html = self.widget.render('myfile', URLFieldFile())
self.assertInHTML('<a href="https://www.python.org/">value</a>', html)
def test_return_false_if_url_does_not_exists(self):
@python_2_unicode_compatible
class NoURLFieldFile(object):
def __str__(self):
return 'value'
html = self.widget.render('myfile', NoURLFieldFile())
self.assertHTMLEqual(html, '<input name="myfile" type="file" />')