From 388b271f1c13fddc087c342a42f3ab1b5ee5247e Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sun, 26 Oct 2014 13:48:57 +0000 Subject: [PATCH] Fixed a 500 error that could occur if someone manyally entered a proceedings url to upload materials to a nonexistent meeting/group combination. - Legacy-Id: 8481 --- ietf/secr/proceedings/views.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/ietf/secr/proceedings/views.py b/ietf/secr/proceedings/views.py index fa8a84740..eb3c11ab8 100644 --- a/ietf/secr/proceedings/views.py +++ b/ietf/secr/proceedings/views.py @@ -4,6 +4,8 @@ import itertools import os import shutil +import debug # pyflakes:ignore + from django.conf import settings from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist @@ -849,11 +851,22 @@ def upload_unified(request, meeting_num, acronym=None, session_id=None): session_id all the time but this makes for an ugly URL which most of the time would be avoided by using acronym. ''' + def redirection_back(meeting, group): + if meeting.type.slug == 'interim': + url = reverse('proceedings_interim', kwargs={'acronym':group.acronym}) + else: + url = reverse('proceedings_select', kwargs={'meeting_num':meeting.number}) + return HttpResponseRedirect(url) + meeting = get_object_or_404(Meeting, number=meeting_num) now = datetime.datetime.now() if acronym: group = get_object_or_404(Group, acronym=acronym) sessions = Session.objects.filter(meeting=meeting,group=group) + if not sessions.exists(): + meeting_name = "IETF %s"%meeting.number if meeting.number.isdigit() else meeting.number + messages.warning(request, 'There does not seem to be a %s session in %s.' % (group.acronym, meeting_name)) + return redirection_back(meeting, group) session = sessions[0] session_name = '' elif session_id: @@ -865,12 +878,7 @@ def upload_unified(request, meeting_num, acronym=None, session_id=None): if request.method == 'POST': button_text = request.POST.get('submit','') if button_text == 'Back': - if meeting.type.slug == 'interim': - url = reverse('proceedings_interim', kwargs={'acronym':group.acronym}) - else: - url = reverse('proceedings_select', kwargs={'meeting_num':meeting_num}) - return HttpResponseRedirect(url) - + return redirection_back(meeting, group) form = UnifiedUploadForm(request.POST,request.FILES) if form.is_valid(): material_type = form.cleaned_data['material_type']