user_import: make sure legacy utf-8 encoding doesn't crash (#55008)
This commit is contained in:
parent
dec65efacc
commit
e4504ac358
|
@ -842,6 +842,9 @@ class UserImportView(MediaMixin, PermissionMixin, TemplateView):
|
|||
self.user_import = UserImport(uuid)
|
||||
if not self.user_import.exists():
|
||||
raise Http404
|
||||
if self.user_import.encoding == 'utf-8':
|
||||
with self.user_import.meta_update as meta:
|
||||
meta['encoding'] = 'utf-8-sig'
|
||||
return super(UserImportView, self).dispatch(request, uuid, **kwargs)
|
||||
|
||||
def get(self, request, uuid, filename=None):
|
||||
|
|
|
@ -584,6 +584,37 @@ x,x,x,x'''.encode(
|
|||
app.get('/manage/users/import/%s/%s/' % (_import.uuid, execute.uuid), status=403)
|
||||
|
||||
|
||||
def test_user_import_legacy_encoding(transactional_db, app, admin, ou1, admin_ou1):
|
||||
response = login(app, admin, '/manage/users/')
|
||||
response = response.click('Import users')
|
||||
response.form.set(
|
||||
'import_file',
|
||||
Upload(
|
||||
'users.csv',
|
||||
'''email key verified,first_name,last_name,phone
|
||||
tnoel@entrouvert.com,Thomas,Noël,1234
|
||||
fpeters@entrouvert.com,Frédéric,Péters,5678
|
||||
john.doe@entrouvert.com,John,Doe,9101112
|
||||
x,x,x,x'''.encode(
|
||||
'utf-8'
|
||||
),
|
||||
'application/octet-stream',
|
||||
),
|
||||
)
|
||||
response.form.set('encoding', 'utf-8-sig')
|
||||
response.form.set('ou', str(get_default_ou().pk))
|
||||
response = response.form.submit()
|
||||
|
||||
imports = [i for i in user_import.UserImport.all()]
|
||||
# oops, utf-8 used to be supported. now it's utf-8-sig but imports may have
|
||||
# been created with utf-8 encoding and not executed yet
|
||||
with imports[0].meta_update as meta:
|
||||
meta['encoding'] = 'utf-8' # not supported anymore
|
||||
|
||||
response = response.follow()
|
||||
response = response.forms['action-form'].submit(name='simulate')
|
||||
|
||||
|
||||
def test_su_permission(app, admin, simple_user):
|
||||
resp = login(app, admin, '/manage/users/%s/' % simple_user.pk)
|
||||
assert len(resp.pyquery('button[name="su"]')) == 0
|
||||
|
|
Loading…
Reference in New Issue