From 143b8cc646e4ed9884a3ac807b4b402b3ac2139c Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sun, 1 Nov 2015 22:49:07 +0000 Subject: [PATCH] Fixed an issue with [10344], where the numberless /meeting/agenda/ would redirect to a non-existing proceedings URL. - Legacy-Id: 10360 Note: SVN reference [10344] has been migrated to Git commit 893988e45eb8eda35d35f68da1c72dc76766721c --- ietf/meeting/helpers.py | 17 ++++++++++++----- ietf/meeting/views.py | 8 ++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index ba7806672..bf9708fd6 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -6,7 +6,7 @@ import os import re from tempfile import mkstemp -from django.http import HttpRequest +from django.http import HttpRequest, Http404 from django.db.models import Max, Q, Prefetch, F from django.conf import settings from django.core.cache import cache @@ -107,12 +107,19 @@ def get_wg_list(assignments): return Group.objects.filter(acronym__in = set(wg_name_list)).order_by('parent__acronym','acronym') -def get_meeting(num=None): +def get_meetings(num=None): if num == None: - meeting = Meeting.objects.filter(type="ietf").order_by("-date")[:1].get() + meetings = Meeting.objects.filter(type="ietf").order_by("-date") else: - meeting = get_object_or_404(Meeting, number=num) - return meeting + meetings = Meeting.objects.filter(type="ietf", number=num) + return meetings + +def get_meeting(num=None): + meetings = get_meetings(num) + if meetings.exists(): + return meetings.first() + else: + raise Http404("No such meeting found: %s" % num) def get_schedule(meeting, name=None): if name is None: diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index dcd729cee..528402809 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -32,7 +32,7 @@ from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list from ietf.meeting.helpers import get_all_assignments_from_schedule from ietf.meeting.helpers import get_modified_from_assignments from ietf.meeting.helpers import get_wg_list, find_ads_for_meeting -from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, meeting_updated +from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, meeting_updated, get_meetings from ietf.meeting.helpers import preprocess_assignments_for_agenda, read_agenda_file from ietf.meeting.helpers import convert_draft_to_pdf from ietf.utils.pipe import pipe @@ -364,17 +364,17 @@ def agenda(request, num=None, name=None, base=None, ext=None): ".csv": "text/csv; charset=%s"%settings.DEFAULT_CHARSET, } - meeting_query = Meeting.objects.filter(number=num) + meetings = get_meetings(num) # We do not have the appropriate data in the datatracker for IETF 64 and earlier. # So that we're not producing misleading pages... - if not meeting_query.exists() or not meeting_query.first().agenda.assignments.exists(): + if not meetings.exists() or not meetings.first().agenda.assignments.exists(): if ext == '.html': return HttpResponseRedirect( 'https://www.ietf.org/proceedings/%s' % num ) else: raise Http404 - meeting = meeting_query.first() + meeting = meetings.first() schedule = get_schedule(meeting, name) if schedule == None: base = base.replace("-utc", "")