Skip to content

Commit 8cc61e0

Browse files
committed
Changed the meeting materials uploads to use the upload file encoding found by file-magic when decoding the upload content, and also return errors to the user if decoding the upload fails. Fixes issue ietf-tools#2469. This will also have the benefit (since we're saving with utf-8 encoding after decoding) of having meeting materials consistently stored with a consistent encoding on the server.
- Legacy-Id: 14781
1 parent 8f4f50d commit 8cc61e0

1 file changed

Lines changed: 25 additions & 10 deletions

File tree

ietf/meeting/views.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,9 +1178,12 @@ def upload_session_bluesheets(request, session_id, num):
11781178
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
11791179
doc.external_url = filename
11801180
e = NewRevisionDocEvent.objects.create(doc=doc, rev=doc.rev, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev)
1181-
doc.save_with_history([e])
1182-
handle_upload_file(file, filename, session.meeting, 'bluesheets')
1183-
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
1181+
save_error = handle_upload_file(file, filename, session.meeting, 'bluesheets', request=request, encoding=form.file_encoding[file.name])
1182+
if save_error:
1183+
form.add_error(None, save_error)
1184+
else:
1185+
doc.save_with_history([e])
1186+
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
11841187
else:
11851188
form = UploadBlueSheetForm()
11861189

@@ -1277,8 +1280,12 @@ def upload_session_minutes(request, session_id, num):
12771280
e = NewRevisionDocEvent.objects.create(doc=doc, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev, rev=doc.rev)
12781281
doc.save_with_history([e])
12791282
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
1280-
handle_upload_file(file, filename, session.meeting, 'minutes')
1281-
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
1283+
save_error = handle_upload_file(file, filename, session.meeting, 'minutes', request=request, encoding=form.file_encoding[file.name])
1284+
if save_error:
1285+
form.add_error(None, save_error)
1286+
else:
1287+
doc.save_with_history([e])
1288+
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
12821289
else:
12831290
form = UploadMinutesForm(show_apply_to_all_checkbox)
12841291

@@ -1377,8 +1384,12 @@ def upload_session_agenda(request, session_id, num):
13771384
e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev)
13781385
doc.save_with_history([e])
13791386
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
1380-
handle_upload_file(file, filename, session.meeting, 'agenda', request)
1381-
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
1387+
save_error = handle_upload_file(file, filename, session.meeting, 'agenda', request=request, encoding=form.file_encoding[file.name])
1388+
if save_error:
1389+
form.add_error(None, save_error)
1390+
else:
1391+
doc.save_with_history([e])
1392+
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
13821393
else:
13831394
form = UploadAgendaForm(show_apply_to_all_checkbox, initial={'apply_to_all':session.type_id=='session'})
13841395

@@ -1479,9 +1490,13 @@ def upload_session_slides(request, session_id, num, name):
14791490
e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev)
14801491
doc.save_with_history([e])
14811492
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
1482-
handle_upload_file(file, filename, session.meeting, 'slides')
1483-
post_process(doc)
1484-
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
1493+
save_error = handle_upload_file(file, filename, session.meeting, 'slides', request=request, encoding=form.file_encoding[file.name])
1494+
if save_error:
1495+
form.add_error(None, save_error)
1496+
else:
1497+
doc.save_with_history([e])
1498+
post_process(doc)
1499+
return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym)
14851500
else:
14861501
initial = {}
14871502
if slides:

0 commit comments

Comments
 (0)