csvdatasource: validate CSV file in clean() (#39971)
This commit is contained in:
parent
fab1bc4c17
commit
d3051b50d7
|
@ -149,6 +149,10 @@ class CsvDataSource(BaseResource):
|
|||
self._detect_dialect_options()
|
||||
except Exception as e:
|
||||
raise ValidationError(_('Could not detect CSV dialect: %s') % e)
|
||||
try:
|
||||
self.get_rows()
|
||||
except Exception as e:
|
||||
raise ValidationError(_('Invalid CSV file: %s') % e)
|
||||
return super(CsvDataSource, self).clean(*args, **kwargs)
|
||||
|
||||
def _detect_dialect_options(self):
|
||||
|
|
|
@ -751,6 +751,17 @@ def test_csv_sniffer(admin_user, app):
|
|||
assert 'Could not detect CSV dialect' in resp
|
||||
|
||||
|
||||
def test_csv_validation(admin_user, app):
|
||||
app = login(app)
|
||||
resp = app.get('/manage/csvdatasource/add')
|
||||
form = resp.form
|
||||
form.set('title', 'Title')
|
||||
form.set('description', 'Description')
|
||||
form.set('csv_file', webtest.Upload('test.csv', b'a,b,c\n1,2\0,3\n4,5,6', 'application/octet-stream'))
|
||||
resp = form.submit()
|
||||
assert 'Invalid CSV file: line contains NUL' in resp
|
||||
|
||||
|
||||
def test_change_csv_command(setup):
|
||||
csv, url = setup(data=StringIO(data))
|
||||
call_command('change-csv', 'test', os.path.join(TEST_BASE_DIR, 'data-empty.ods'))
|
||||
|
|
Loading…
Reference in New Issue