Allow meetings/materials to be queried without an explicit meeting number. Fixes issue #1934. Commit ready for merge.

- Legacy-Id: 11075
This commit is contained in:
Ben Campbell 2016-04-02 19:54:59 +00:00
parent 9f90441aa6
commit d3a14a7e15
3 changed files with 20 additions and 11 deletions

View file

@ -180,7 +180,18 @@ class MeetingTests(TestCase):
self.assertEqual(r.status_code, 302)
self.assertTrue(meeting.number in r["Location"])
r = self.client.get(urlreverse("ietf.meeting.views.materials", kwargs=dict(meeting_num=meeting.number)))
# test with explicit meeting number in url
r = self.client.get(urlreverse("ietf.meeting.views.materials", kwargs=dict(num=meeting.number)))
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
row = q('#content td div:contains("%s")' % str(session.group.acronym)).closest("tr")
self.assertTrue(row.find('a:contains("Agenda")'))
self.assertTrue(row.find('a:contains("Minutes")'))
self.assertTrue(row.find('a:contains("Slideshow")'))
self.assertFalse(row.find("a:contains(\"Bad Slideshow\")"))
#test with no meeting number in url
r = self.client.get(urlreverse("ietf.meeting.views.materials", kwargs=dict()))
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
row = q('#content td div:contains("%s")' % str(session.group.acronym)).closest("tr")

View file

@ -55,11 +55,10 @@ type_ietf_only_patterns_id_optional = [
url(r'^agenda/room-view(?:.html)?/?$', views.room_view),
url(r'^week-view(?:.html)?/?$', views.week_view),
url(r'^room-view(?:.html)?/$', views.room_view),
url(r'^materials(?:.html)?/$', views.materials),
]
urlpatterns = [
# TODO - views.material should take num instead of meeting_num so it can move into one of the above lists
url(r'^(?P<meeting_num>\d+)/materials(?:.html)?/?$', views.materials),
url(r'^requests.html$', RedirectView.as_view(url='/meeting/requests', permanent=True)),
url(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)),
url(r'^(?P<num>[A-Za-z0-9._+-]+)/', include(safe_for_all_meeting_types)),

View file

@ -41,9 +41,8 @@ from ietf.utils.pdf import pdf_pages
from ietf.doc.fields import SearchableDocumentsField
def materials(request, meeting_num=None):
meeting = get_meeting(meeting_num)
def materials(request, num=None):
meeting = get_meeting(num)
begin_date = meeting.get_submission_start_date()
cut_off_date = meeting.get_submission_cut_off_date()
cor_cut_off_date = meeting.get_submission_correction_date()
@ -52,24 +51,24 @@ def materials(request, meeting_num=None):
pass
elif now > cor_cut_off_date:
return render(request, "meeting/materials_upload_closed.html", {
'meeting_num': meeting_num,
'meeting_num': meeting.number,
'begin_date': begin_date,
'cut_off_date': cut_off_date,
'cor_cut_off_date': cor_cut_off_date
})
#sessions = Session.objects.filter(meeting__number=meeting_num, timeslot__isnull=False)
#sessions = Session.objects.filter(meeting__number=meeting.number, timeslot__isnull=False)
schedule = get_schedule(meeting, None)
sessions = Session.objects.filter(meeting__number=meeting_num, timeslotassignments__schedule=schedule).select_related()
sessions = Session.objects.filter(meeting__number=meeting.number, timeslotassignments__schedule=schedule).select_related()
plenaries = sessions.filter(name__icontains='plenary')
ietf = sessions.filter(group__parent__type__slug = 'area').exclude(group__acronym='edu')
irtf = sessions.filter(group__parent__acronym = 'irtf')
training = sessions.filter(group__acronym__in=['edu','iaoc'])
iab = sessions.filter(group__parent__acronym = 'iab')
cache_version = Document.objects.filter(session__meeting__number=meeting_num).aggregate(Max('time'))["time__max"]
cache_version = Document.objects.filter(session__meeting__number=meeting.number).aggregate(Max('time'))["time__max"]
return render(request, "meeting/materials.html", {
'meeting_num': meeting_num,
'meeting_num': meeting.number,
'plenaries': plenaries, 'ietf': ietf, 'training': training, 'irtf': irtf, 'iab': iab,
'cut_off_date': cut_off_date,
'cor_cut_off_date': cor_cut_off_date,