manager: display an error when importing a non-json file (#21056)

This commit is contained in:
Frédéric Péters 2018-03-17 17:59:31 +01:00
parent 9a71e66a1c
commit d8b17a57d9
2 changed files with 13 additions and 1 deletions

View File

@ -72,7 +72,12 @@ class SiteImportView(FormView):
success_url = reverse_lazy('combo-manager-homepage')
def form_valid(self, form):
json_site = json.load(self.request.FILES['site_json'])
try:
json_site = json.load(self.request.FILES['site_json'])
except ValueError:
form.add_error('site_json', _('File is not in the expected JSON format.'))
return self.form_invalid(form)
try:
import_site(json_site)
except MissingGroups as e:

View File

@ -275,6 +275,13 @@ def test_site_export_import(app, admin_user):
assert LinkCell.objects.get(page__slug='one').link_page.slug == 'two'
assert LinkCell.objects.get(page__slug='two').link_page.slug == 'one'
# check with invalid file
resp = app.get('/manage/')
resp = resp.click('Import Site')
resp.form['site_json'] = Upload('site-export.json', 'invalid content', 'application/json')
resp = resp.form.submit()
assert 'File is not in the expected JSON format.' in resp.body
def test_add_edit_cell(app, admin_user):
Page.objects.all().delete()
page = Page(title='One', slug='one', template_name='standard')