Merged in [11711] from rjsparks@nostrum.com:

Starting a page for direct rendering of proceedings.
 - Legacy-Id: 11717
Note: SVN reference [11711] has been migrated to Git commit d9b1528f36e092892c9a18602615f7151edf75c3
This commit is contained in:
Henrik Levkowetz 2016-07-19 11:22:00 +00:00
parent d117b9399d
commit 081abec0e8
4 changed files with 222 additions and 1 deletions

View file

@ -248,6 +248,17 @@ class MeetingTests(TestCase):
# FIXME: missing tests of .pdf/.tar generation (some code can
# probably be lifted from similar tests in iesg/tests.py)
def test_proceedings(self):
meeting = make_meeting_test_data()
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
self.write_materials_files(meeting, session)
url = urlreverse("ietf.meeting.views.proceedings", kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
def test_feed(self):
meeting = make_meeting_test_data()
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

View file

@ -65,7 +65,8 @@ type_ietf_only_patterns_id_optional = [
url(r'^floor-plan/(?P<floor>[-a-z0-9_]+)/?$', views.floor_plan),
url(r'^week-view(?:.html)?/?$', views.week_view),
url(r'^room-view(?:.html)?/$', views.room_view),
url(r'^materials(?:.html)?/$', views.materials),
url(r'^materials(?:.html)?/$', views.materials),
url(r'^proceedings(?:.html)?/$', views.proceedings),
]
urlpatterns = [

View file

@ -1441,3 +1441,30 @@ def floor_plan(request, num=None, floor=None, ):
"number": num,
"floors": floors,
})
@role_required('Secretariat')
def proceedings(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()
now = datetime.date.today()
schedule = get_schedule(meeting, None)
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.number).aggregate(Max('time'))["time__max"]
return render(request, "meeting/proceedings.html", {
'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,
'submission_started': now > begin_date,
'cache_version': cache_version,
})

View file

@ -0,0 +1,182 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load ietf_filters staticfiles %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "jquery.tablesorter/css/theme.bootstrap.min.css" %}">
{% endblock %}
{% block bodyAttrs %}data-spy="scroll" data-target="#affix"{% endblock %}
{% block title %}IETF {{ meeting_num }} Proceedings {% endblock %}
{% block content %}
{% origin %}
<div class="row">
<div class="col-md-10">
<h1>IETF {{ meeting_num }} Proceedings</h1>
<p class="alert alert-info">
<b>This page is under construction</b>
</p>
{# cache for 15 minutes, as long as there's no proceedings activity. takes 4-8 seconds to generate. #}
{% load cache %}
{% cache 900 ietf_meeting_materials meeting_num cache_version %}
{% with "True" as show_agenda %}
<!-- Plenaries -->
{% if plenaries %}
<h2 class="anchor-target" id="plenaries">Plenaries</h2>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th class="col-md-1">Group</th>
<th class="col-md-1">Agenda</th>
<th class="col-md-1">Minutes</th>
<th class="col-md-6">Slides</th>
<th class="col-md-3">Drafts</th>
</tr>
</thead>
<tbody>
{% for session in plenaries %}
{% include "meeting/group_materials.html" %}
{% endfor %}
</tbody>
</table>
{% endif %}
<!-- Working groups -->
{% regroup ietf|dictsort:"group.parent.acronym" by group.parent.name as areas %}
{% for sessions in areas %}
<h2 class="anchor-target" id="{{sessions.list.0.group.parent.acronym}}">{{sessions.list.0.group.parent.acronym|upper}} <small>{{ sessions.grouper }}</small></h2>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th class="col-md-1">Group</th>
<th class="col-md-1">Agenda</th>
<th class="col-md-1">Minutes</th>
<th class="col-md-6">Slides</th>
<th class="col-md-3">Drafts</th>
</tr>
</thead>
<tbody>
{% for session in sessions.list|dictsort:"group.acronym" %}
{% ifchanged session.group.acronym %}
{% include "meeting/group_materials.html" %}
{% endifchanged %}
{% endfor %}
</tbody>
</table>
{% endfor %}
<!-- Training Sessions -->
{% if training %}
{% with "False" as show_agenda %}
<h2 class="anchor-target" id="training">Training</h2>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th class="col-md-1">Group</th>
<th class="col-md-1">Agenda</th>
<th class="col-md-1">Minutes</th>
<th class="col-md-6">Slides</th>
<th class="col-md-3">Drafts</th>
</tr>
</thead>
<tbody>
{% for session in training %}
{% ifchanged %}
{% include "meeting/group_materials.html" %}
{% endifchanged %}
{% endfor %}
</tbody>
</table>
{% endwith %}
{% endif %}
<!-- IAB Sessions -->
{% if iab %}
<h2 class="anchor-target" id="iab">IAB <small>Internet Architecture Board</small></h2>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th class="col-md-1">Group</th>
<th class="col-md-1">Agenda</th>
<th class="col-md-1">Minutes</th>
<th class="col-md-6">Slides</th>
<th class="col-md-3">Drafts</th>
</tr>
</thead>
<tbody>
{% for session in iab %}
{% ifchanged %}
{% include "meeting/group_materials.html" %}
{% endifchanged %}
{% endfor %}
</tbody>
</table>
{% endif %}
<!-- IRTF Sessions -->
{% if irtf %}
<h2 class="anchor-target" id="irtf">IRTF <small>Internet Research Task Force</small></h2>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th class="col-md-1">Group</th>
<th class="col-md-1">Agenda</th>
<th class="col-md-1">Minutes</th>
<th class="col-md-6">Slides</th>
<th class="col-md-3">Drafts</th>
</tr>
</thead>
<tbody>
{% for session in irtf|dictsort:"group.acronym" %}
{% ifchanged %}
{% include "meeting/group_materials.html" %}
{% endifchanged %}
{% endfor %}
</tbody>
</table>
{% endif %}
{% endwith %}
{% endcache %}
</div>
<div class="col-md-2 hidden-print bs-docs-sidebar" id="affix">
<ul class="nav nav-pills nav-stacked small" data-spy="affix">
{% if plenaries %}
<li><a href="#plenaries">Plenaries</a></li>
{% endif %}
{% if ietf %}
{% regroup ietf|dictsort:"group.parent.acronym" by group.parent as areas %}
{% for area in areas %}
<li><a href="#{{area.grouper.acronym}}">{{ area.grouper.acronym|upper }}</a></li>
{% endfor %}
{% endif %}
{% if training %}
<li><a href="#training">Training</a></li>
{% endif %}
{% if iab %}
<li><a href="#iab">IAB</a></li>
{% endif %}
{% if irtf %}
<li><a href="#irtf">IRTF</a></li>
{% endif %}
</ul>
</div>
</div>
{% endblock %}
{% block js %}
<script src="{% static "jquery.tablesorter/js/jquery.tablesorter.combined.min.js" %}"></script>
{% endblock %}