New view code and templates for agenda pages, updating all agenda templates
to take schedule-specific information so that they will work with arbitrary schedules, not just the official schedule for a meeting. - Legacy-Id: 6537
This commit is contained in:
parent
c61d1d1c2f
commit
951670e9df
|
@ -8,15 +8,15 @@ from ietf.meeting import ajax
|
|||
urlpatterns = patterns('',
|
||||
(r'^(?P<meeting_num>\d+)/materials.html$', views.materials),
|
||||
(r'^agenda/$', views.agenda),
|
||||
(r'^agenda-utc(?:.html)?$', views.html_agenda_utc),
|
||||
(r'^agenda(?:.html)?$', views.agenda),
|
||||
(r'^(?P<base>agenda-utc)(?P<ext>.html)?$', views.agenda),
|
||||
(r'^agenda(?P<ext>.html)?$', views.agenda),
|
||||
(r'^agenda/edit$', views.edit_agenda),
|
||||
(r'^requests.html$', redirect_to, {"url": '/meeting/requests', "permanent": True}),
|
||||
(r'^requests$', views.meeting_requests),
|
||||
(r'^agenda(?P<ext>.txt)$', views.agenda),
|
||||
(r'^agenda/agenda.ics$', views.ical_agenda),
|
||||
(r'^agenda.ics$', views.ical_agenda),
|
||||
(r'^agenda.csv$', views.csv_agenda),
|
||||
(r'^agenda(?P<ext>.csv)$', views.agenda),
|
||||
(r'^agenda/week-view.html$', views.week_view),
|
||||
(r'^week-view.html$', views.week_view),
|
||||
(r'^(?P<num>\d+)/schedule/edit$', views.edit_agenda),
|
||||
|
@ -24,12 +24,12 @@ urlpatterns = patterns('',
|
|||
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)/details$', views.edit_agenda_properties),
|
||||
(r'^(?P<num>\d+)/schedule/(?P<name>[A-Za-z0-9-:_]+)(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/agenda(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/agenda-utc(?:.html)?/?$', views.html_agenda_utc),
|
||||
(r'^(?P<num>\d+)/(?P<base>agenda-utc)(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/requests.html$', redirect_to, {"url": '/meeting/%(num)s/requests', "permanent": True}),
|
||||
(r'^(?P<num>\d+)/requests$', views.meeting_requests),
|
||||
(r'^(?P<num>\d+)/agenda(?P<ext>.txt)$', views.agenda),
|
||||
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
|
||||
(r'^(?P<num>\d+)/agenda.csv$', views.csv_agenda),
|
||||
(r'^(?P<num>\d+)/agenda(?P<ext>.csv)$', views.agenda),
|
||||
(r'^(?P<num>\d+)/agendas/edit$', views.edit_agendas),
|
||||
(r'^(?P<num>\d+)/timeslots/edit$', views.edit_timeslots),
|
||||
(r'^(?P<num>\d+)/rooms$', ajax.timeslot_roomsurl),
|
||||
|
|
|
@ -432,14 +432,14 @@ def iphone_agenda(request, num, name):
|
|||
"wg_list" : wgs, "rg_list" : rgs, "area_list" : areas},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def agenda(request, num=None, name=None, ext=".html"):
|
||||
if ext is None:
|
||||
ext = ".html"
|
||||
def agenda(request, num=None, name=None, base=None, ext=None):
|
||||
base = base if base else 'agenda'
|
||||
ext = ext if ext else '.html'
|
||||
mimetype = {".html":"text/html", ".txt": "text/plain", ".ics":"text/calendar", ".csv":"text/csv"}
|
||||
meeting = get_meeting(num)
|
||||
schedule = get_schedule(meeting, name)
|
||||
updated = Switches().from_object(meeting).updated()
|
||||
return HttpResponse(render_to_string("meeting/agenda"+ext,
|
||||
return HttpResponse(render_to_string("meeting/"+base+ext,
|
||||
{"schedule":schedule, "updated": updated}, RequestContext(request)), mimetype=mimetype[ext])
|
||||
|
||||
def read_agenda_file(num, doc):
|
||||
|
@ -633,13 +633,15 @@ def week_view(request, num=None):
|
|||
return render_to_response(template,
|
||||
{"timeslots":timeslots,"render_types":["Session","Other","Break","Plenary"]}, context_instance=RequestContext(request))
|
||||
|
||||
def ical_agenda(request, num=None, name=None):
|
||||
def ical_agenda(request, num=None, name=None, ext=None):
|
||||
meeting = get_meeting(num)
|
||||
schedule = get_schedule(meeting, name)
|
||||
updated = Switches().from_object(meeting).updated()
|
||||
|
||||
q = request.META.get('QUERY_STRING','') or ""
|
||||
filter = urllib.unquote(q).lower().split(',');
|
||||
include = set(filter)
|
||||
include_types = set(["Plenary","Other"])
|
||||
filter = set(urllib.unquote(q).lower().split(','))
|
||||
include = [ i for i in filter if not (i.startswith('-') or i.startswith('~')) ]
|
||||
include_types = set(["plenary","other"])
|
||||
exclude = []
|
||||
|
||||
# Process the special flags.
|
||||
|
@ -651,38 +653,26 @@ def ical_agenda(request, num=None, name=None):
|
|||
# Non-Working Group "wg names" include:
|
||||
# edu, ietf, tools, iesg, iab
|
||||
|
||||
for item in include:
|
||||
for item in filter:
|
||||
if item:
|
||||
if item[0] == '-' and item[1] == '~':
|
||||
include_types -= set([item[2:3].upper()+item[3:]])
|
||||
include_types -= set([item[2:]])
|
||||
elif item[0] == '-':
|
||||
exclude.append(item[1:])
|
||||
elif item[0] == '~':
|
||||
include_types |= set([item[1:2].upper()+item[2:]])
|
||||
include_types |= set([item[1:]])
|
||||
|
||||
timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id),
|
||||
Q(type__name__in = include_types) |
|
||||
Q(sessions__group__acronym__in = filter) |
|
||||
Q(sessions__group__parent__acronym__in = filter)
|
||||
).exclude(Q(sessions__group__acronym__in = exclude)).distinct()
|
||||
assignments = schedule.assignments.filter(
|
||||
Q(timeslot__type__slug__in = include_types) |
|
||||
Q(session__group__acronym__in = include) |
|
||||
Q(session__group__parent__acronym__in = include)
|
||||
).exclude(session__group__acronym__in = exclude).distinct()
|
||||
#.exclude(Q(session__group__isnull = False),
|
||||
#Q(session__group__acronym__in = exclude) |
|
||||
#Q(session__group__parent__acronym__in = exclude))
|
||||
|
||||
if meeting.time_zone:
|
||||
try:
|
||||
tzfn = os.path.join(settings.TZDATA_ICS_PATH, meeting.time_zone + ".ics")
|
||||
tzf = open(tzfn)
|
||||
icstext = tzf.read()
|
||||
vtimezone = re.search("(?sm)(\nBEGIN:VTIMEZONE.*\nEND:VTIMEZONE\n)", icstext).group(1).strip()
|
||||
tzf.close()
|
||||
except IOError:
|
||||
vtimezone = None
|
||||
else:
|
||||
vtimezone = None
|
||||
|
||||
return HttpResponse(render_to_string("meeting/agenda.ics",
|
||||
{"timeslots":timeslots, "meeting":meeting, "vtimezone": vtimezone },
|
||||
{"schedule":schedule, "assignments":assignments, "updated":updated},
|
||||
RequestContext(request)), mimetype="text/calendar")
|
||||
|
||||
def csv_agenda(request, num=None, name=None):
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% load ietf_filters %}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% load humanize %}
|
||||
{% block title %}IETF {{ meeting.number }} Meeting Agenda{% endblock %}
|
||||
{% block title %}IETF {{ schedule.meeting.number }} Meeting Agenda{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
table#agenda { border: 0; border-collapse:collapse; }
|
||||
|
@ -22,7 +22,7 @@ table#wg-selector { border:1px solid black; border-collapse:collapse; }
|
|||
table#ics-preconfig { border:1px solid black; border-collapse:collapse; margin-top:24px; margin-bottom:24px;}
|
||||
|
||||
#weekview.hidden { display: none; }
|
||||
#weekview { border: none; margin: 0 0 0 0;}
|
||||
#weekview { border: none; margin: 0 0 0 0; overflow: hidden;}
|
||||
#ical-link.hidden { display: none; }
|
||||
#ical-link { margin: 10px 0 0 0; padding: 10px; text-align: center; background-color: #2647a0; color: #FFFFFF }
|
||||
#ical-link A:link { color: #FFFFFF; }
|
||||
|
@ -74,22 +74,14 @@ img.hidden { display: none; }
|
|||
|
||||
{% endblock morecss %}
|
||||
|
||||
{% block pagehead %}
|
||||
{% block js %}
|
||||
<script type="text/javascript" src='/js/agenda2.js'></script>
|
||||
<script type="text/javascript" src='/js/jquery-1.8.2.min.js'></script>
|
||||
<script type="text/javascript" src='/js/browsertime.js'></script>
|
||||
<script type="text/javascript" src='/js/weekview.js'></script>
|
||||
<script type="text/javascript" >
|
||||
var lastfrag;
|
||||
</script>
|
||||
<script type="text/javascript" src='/js/browsertime.js'></script>
|
||||
{% endblock js %}
|
||||
|
||||
{% endblock pagehead %}
|
||||
{% block bodyAttrs %}onload='setGroupState();updateAgendaColors()'{% endblock %}
|
||||
{% block content %}
|
||||
<h1>IETF {{ meeting.number }} Meeting Agenda</h1>
|
||||
|
||||
<p>{{ meeting.city }}, {{ meeting.date|date:"F j" }} – {% ifnotequal meeting.date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}<br />
|
||||
Updated {{ modified|date:"Y-m-d H:i:s T" }}</p>
|
||||
|
||||
<blockquote style="background-color: #ffc; text-align: center;"><h3>Time zone information:</h3>
|
||||
The agenda times in this version of the agenda
|
||||
|
@ -98,16 +90,19 @@ Updated {{ modified|date:"Y-m-d H:i:s T" }}</p>
|
|||
</blockquote>
|
||||
<div style="text-align: center; margin-bottom: 1em;">
|
||||
<input type="button" name="displayinbrowsertime" id="displayinbrowsertime" value="Display in browser time"/>
|
||||
|
||||
</div>
|
||||
|
||||
<h1>IETF {{ schedule.meeting.number }} Meeting Agenda</h1>
|
||||
|
||||
<p>{{ schedule.meeting.city }}, {{ schedule.meeting.date|date:"F j" }} – {% ifnotequal schedule.meeting.date.month schedule.meeting.end_date.month %}{{ schedule.meeting.end_date|date:"F " }}{% endifnotequal %}{{ schedule.meeting.end_date|date:"j, Y" }}<br />
|
||||
Updated {{ updated|date:"Y-m-d H:i:s T" }}</p>
|
||||
<div class="noprint">
|
||||
(There's also a <a href="/meeting/agenda">agenda with local times</a>, a <a href="/meeting/{{meeting.number}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{meeting.number}}/">tools-style agenda</a> available)</div>
|
||||
(There's also a <a href="/meeting/agenda">agenda with local times</a>, a <a href="/meeting/{{schedule.meeting.number}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{schedule.meeting.number}}/">tools-style agenda</a> available)</div>
|
||||
|
||||
<p><strong>IETF agendas are subject to change, up to and during the meeting.</strong></p>
|
||||
|
||||
{# cache this part for 15 minutes -- it takes 3-6 seconds to generate #}
|
||||
{% load cache %}{% cache 900 ietf_meeting_agenda_utc meeting.number %}
|
||||
{# cache this part for 5 minutes -- it takes 3-6 seconds to generate #}
|
||||
{% load cache %}{% cache 3 ietf_meeting_agenda_utc schedule.meeting.number %}
|
||||
|
||||
You can customize the agenda below to show only selected working group sessions. To be able to return to the customized view later, bookmark the resulting URL.
|
||||
<div class="noprint" onclick="toggle_wg_selector()">
|
||||
|
@ -118,18 +113,18 @@ You can customize the agenda below to show only selected working group sessions.
|
|||
|
||||
<table id="wg-selector" width="100%" class="hidden">
|
||||
<tr>
|
||||
{% for area in area_list %}
|
||||
{% for area in schedule.area_list %}
|
||||
<th><div id='selector-{{area|upper}}' class="unselected" onclick="toggle(this)">{{area|upper}}</div></th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
<tr>
|
||||
{% for wg in wg_list %}{% ifchanged wg.parent.acronym %}{% if forloop.counter > 1 %}
|
||||
{% for wg in schedule.groups %}{% ifchanged wg.parent.acronym %}{% if forloop.counter > 1 %}
|
||||
</td>{% endif %}
|
||||
<td valign="top" id="{{wg.parent.acronym|upper}}-groups">{% endifchanged %}
|
||||
<div id='selector-{{wg.acronym}}' class="unselected" onclick="toggle(this)">{% if wg.state.name = "BOF" %}<i>{{wg.acronym}}</i>{% else %}{{wg.acronym}}{% endif %}</div>{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="center" colspan="{{area_list|length}}">
|
||||
<tr><td align="center" colspan="{{schedule.area_list|length}}">
|
||||
Also show:
|
||||
<input type="checkbox" class="include-checkbox" id="include-edu" onchange="toggle_special(this)"/>EDU •
|
||||
<input type="checkbox" class="include-checkbox" id="include-ietf" onchange="toggle_special(this)"/>IETF •
|
||||
|
@ -137,81 +132,94 @@ You can customize the agenda below to show only selected working group sessions.
|
|||
<input type="checkbox" class="include-checkbox" id="include-iesg" onchange="toggle_special(this)"/>IESG •
|
||||
<input type="checkbox" class="include-checkbox" id="include-iab" onchange="toggle_special(this)"/>IAB
|
||||
<!-- </td></tr>
|
||||
<tr><td align="center" colspan="{{area_list|length}}">
|
||||
<tr><td align="center" colspan="{{schedule.area_list|length}}">
|
||||
-->
|
||||
<br/><i>Groups displayed in italics are BOFs</i></td></tr>
|
||||
</table>
|
||||
|
||||
<div id="ical-link" class="hidden"><span style="font-size:150%">Week View</span><br/><a id="ical-href" href="{% url ietf.meeting.views.ical_agenda num=meeting.number %}"><em>Download as an .ics file</em></a></div>
|
||||
<div id="ical-link" class="hidden"><span style="font-size:150%">Week View</span><br/><a id="ical-href" href="{% url ietf.meeting.views.ical_agenda num=schedule.meeting.number %}"><em>Download as an .ics file</em></a></div>
|
||||
|
||||
<iframe id="weekview" class="hidden" width="100%" height="600px" src="about:blank"></iframe>
|
||||
<iframe id="weekview" class="hidden" width="100%" height="600px" src="about:blank" scrolling="no"></iframe>
|
||||
|
||||
<table width="100%" id="ics-preconfig"><tr><td align="center">
|
||||
Preconfigured .ics links:
|
||||
{% for area in area_list %}
|
||||
<a href="{% url ietf.meeting.views.ical_agenda num=meeting.number %}?{{area|upper}},-~Other,-~Plenary">{{area|upper}}</a> •
|
||||
{% for area in schedule.area_list %}
|
||||
<a href="{% url ietf.meeting.views.ical_agenda num=schedule.meeting.number %}?{{area|upper}},-~Other,-~Plenary">{{area|upper}}</a> •
|
||||
{% endfor %}
|
||||
<a href="{% url ietf.meeting.views.ical_agenda num=meeting.number %}">Non-Area Events</a>
|
||||
<a href="{% url ietf.meeting.views.ical_agenda num=schedule.meeting.number %}">Non-Area Events</a>
|
||||
</td></tr></table>
|
||||
|
||||
{% if meeting.agenda_note %}<h2 class="ietf-divider" style="background-color: #C00; margin-top: 2em; margin-bottom: 0;">{{ meeting.agenda_note|safe }}</h2>{% endif %}
|
||||
{% if schedule.meeting.agenda_note %}<h2 class="ietf-divider" style="background-color: #C00; margin-top: 2em; margin-bottom: 0;">{{ schedule.meeting.agenda_note|safe }}</h2>{% endif %}
|
||||
|
||||
<table id="agenda" width="100%">
|
||||
{% for slot in timeslots %}
|
||||
{% for item in schedule.assignments.all %}
|
||||
{% ifchanged %}
|
||||
<tr class="meeting-date">
|
||||
<td colspan="6">
|
||||
<h2 class="ietf-divider">{{ slot.time|date:"l"|upper }}, {{ slot.time|date:"F j, Y" }}</h2>
|
||||
<h2 class="ietf-divider">{{ item.timeslot.time|date:"l"|upper }}, {{ item.timeslot.time|date:"F j, Y" }}</h2>
|
||||
</td>
|
||||
</tr>
|
||||
{% endifchanged %}
|
||||
{% ifchanged %}
|
||||
{% if item.timeslot.type.slug == 'session' %}
|
||||
{% ifchanged %}
|
||||
<tr class="time-title">
|
||||
<td colspan="1" class="timecolumn">
|
||||
<span class="ietf-tiny">{{slot.utc_start_time|date:"M d"}} </span>
|
||||
{{slot.utc_start_time|date:"Hi"}}-{{slot.utc_end_time|date:"Hi"}} <span class="ietf-tiny">UTC</span>
|
||||
<span class="ietf-tiny">{{ item.timeslot.utc_start_time|date:"M d"}} </span>
|
||||
{{ item.timeslot.utc_start_time|date:"Hi"}}-{{item.timeslot.utc_end_time|date:"Hi"}} <span class="ietf-tiny">UTC</span>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
{% if slot.type.name == 'Session' %}{{ slot.time|date:"l"}}{% endif %}
|
||||
{{slot.name}}
|
||||
{% if slot.type.name != 'Session' %} -
|
||||
{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.number}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}
|
||||
{% endif %}
|
||||
{{ item.timeslot.time|date:"l"}} {{item.timeslot.name}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endifchanged %}
|
||||
{% if slot.type.name = 'Session' %} {% if slot.session.group %}
|
||||
<tr id="{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="grouprow">
|
||||
{% endifchanged %}
|
||||
{% endif %}
|
||||
{% if item.timeslot.type.slug == 'break' or item.timeslot.type.slug == 'reg' or item.timeslot.type.slug == 'other' or item.timeslot.type.slug == 'plenary' %}
|
||||
{% ifchanged %}
|
||||
<tr class="time-title">
|
||||
<td colspan="1" class="timecolumn">
|
||||
<span class="ietf-tiny">{{ item.timeslot.utc_start_time|date:"M d"}} </span>
|
||||
{{ item.timeslot.utc_start_time|date:"Hi"}}-{{item.timeslot.utc_end_time|date:"Hi"}} <span class="ietf-tiny">UTC</span>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
{{item.timeslot.name}}
|
||||
-
|
||||
{% if item.timeslot.show_location %}<a href="http://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|escape}}</a>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endifchanged %}
|
||||
{% endif %}
|
||||
{% if item.timeslot.type.slug = 'session' %} {% if item.session.group %}
|
||||
<tr id="{{schedule.meeting.number}}-{{item.timeslot.time|date:"D-Hi"|lower}}-{{item.session.group.parent.acronym|upper}}-{{item.session.group.acronym|lower}}" class="grouprow">
|
||||
<td>
|
||||
<td>{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.number}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}</td>
|
||||
<td>{{slot.session.group.parent.acronym|upper}}</td>
|
||||
<td>{% if item.timeslot.show_location %}<a href="http://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|escape}}</a>{% endif %}</td>
|
||||
<td>{{item.session.group.parent.acronym|upper}}</td>
|
||||
<td>
|
||||
{% if slot.session.group.charter %}<a href="{{slot.session.group.charter.get_absolute_url}}">{{slot.session.group.acronym}}</a>
|
||||
{% else %}{{slot.session.group.acronym}}{% endif %}</td>
|
||||
{% if item.session.group.charter %}<a href="{{item.session.group.charter.get_absolute_url}}">{{item.session.group.acronym}}</a>
|
||||
{% else %}{{item.session.group.acronym}}{% endif %}</td>
|
||||
<td>
|
||||
<img src="/images/color-palette-4x4.gif" alt="" onclick="pickAgendaColor('{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}',this);" title="color tag this line"/ class="noprint">
|
||||
{% if slot.session.agenda %}<a href="/meeting/{{ meeting.number }}/agenda/{{ slot.session.group.acronym }}/">{{slot.session.group.name}}</a>
|
||||
{% else %}{{slot.session.group.name}}{% endif %}
|
||||
{% if slot.session.group.state.name = "BOF" %} BOF {% endif %}
|
||||
{% if slot.session.agenda_note %}
|
||||
<br/><span class="note">{{slot.session.agenda_note}}</span>{% endif %}</td>
|
||||
<td class="materials">{% if slot.session.agenda %}drafts: <a href="/meeting/{{meeting.number}}/agenda/{{slot.session.group.acronym}}-drafts.tgz">tar</a>|<a href="/meeting/{{ meeting.number }}/agenda/{{slot.session.group.acronym}}-drafts.pdf">pdf</a>{%endif%}</td>
|
||||
<img src="/images/color-palette-4x4.gif" alt="" onclick="pickAgendaColor('{{schedule.meeting.number}}-{{item.timeslot.time|date:"D-Hi"|lower}}-{{item.session.group.parent.acronym|upper}}-{{item.session.group.acronym|lower}}',this);" title="color tag this line"/ class="noprint">
|
||||
{% if item.session.agenda %}<a href="/meeting/{{ schedule.meeting.number }}/agenda/{{ item.session.group.acronym }}/">{{item.session.group.name}}</a>
|
||||
{% else %}{{item.session.group.name}}{% endif %}
|
||||
{% if item.session.group.state.name = "BOF" %} BOF {% endif %}
|
||||
{% if item.session.agenda_note %}
|
||||
<br/><span class="note">{{item.session.agenda_note}}</span>{% endif %}</td>
|
||||
<td class="materials">{% if item.session.agenda %}drafts: <a href="/meeting/{{schedule.meeting.number}}/agenda/{{item.session.group.acronym}}-drafts.tgz">tar</a>|<a href="/meeting/{{ schedule.meeting.number }}/agenda/{{item.session.group.acronym}}-drafts.pdf">pdf</a>{%endif%}</td>
|
||||
</tr>
|
||||
<tr id="{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="groupagenda">
|
||||
<tr id="{{schedule.meeting.number}}-{{item.timeslot.time|date:"D-Hi"|lower}}-{{item.session.group.parent.acronym|upper}}-{{item.session.group.acronym|lower}}" class="groupagenda">
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
{% if slot.session.agenda %}
|
||||
{% if slot.session.agenda.file_extension in show_inline%}
|
||||
<iframe width="100%" height="1px" src="about:blank" xsrc="{{slot.session.agenda.href}}" onload="r(this)"></iframe>
|
||||
{% if item.session.agenda %}
|
||||
{% if item.session.agenda.file_extension == "txt" or item.session.agenda.file_extension == "html" or item.session.agenda.file_extension == "htm" %}
|
||||
<iframe width="100%" height="1px" src="about:blank" xsrc="{{item.session.agenda.href|default:'about:blank'}}" onload="r(this)"></iframe>
|
||||
{% else %}
|
||||
<b><i>Agenda submitted in {{slot.session.agenda.file_extension|upper}} format</i></b>
|
||||
<b><i>Agenda submitted in {{item.session.agenda.file_extension|upper}} format</i></b>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<b><i>No Agenda Submitted</i></b>
|
||||
{% endif %}
|
||||
{% if slot.session.slides %}
|
||||
{% if item.session.slides %}
|
||||
<h3>Slides:</h3>
|
||||
<ol>{% for slide in slot.session.slides %}
|
||||
<ol>{% for slide in item.session.slides %}
|
||||
<li>
|
||||
<img src="/images/{{slide.file_extension|upper}}_icon.png">
|
||||
<a href="{{ slide.href }}">{{ slide.title|clean_whitespace }}</a>
|
||||
|
@ -222,14 +230,14 @@ You can customize the agenda below to show only selected working group sessions.
|
|||
</tr>
|
||||
|
||||
{% endif %} {% endif %}
|
||||
{% if slot.type.name = 'Plenary' %}
|
||||
{% if item.timeslot.type.slug = 'plenary' %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
<iframe width="100%" height="1px" src="{{slot.session.agenda.href}}" onload="r(this)"></iframe>
|
||||
{% if slot.session.slides %}
|
||||
<iframe width="100%" height="1px" src="{{item.session.agenda.href}}" onload="r(this)"></iframe>
|
||||
{% if item.session.slides %}
|
||||
<h3>Slides:</h3>
|
||||
<ol>{% for slide in slot.session.slides %}
|
||||
<ol>{% for slide in item.session.slides %}
|
||||
<li>
|
||||
<img src="/images/{{slide.file_extension|upper}}_icon.png">
|
||||
<a href="{{ slide.href }}">{{ slide.title|clean_whitespace }}</a>
|
|
@ -1,5 +1,25 @@
|
|||
{% load humanize %}{% autoescape off %}{% load ietf_filters %}"Date","Start","End","Session","Room","Area","Acronym","Type","Description","Session ID","Agenda","Slides"
|
||||
{% for slot in timeslots %}{% ifchanged %}{% if slot.reg_info %}"{{ slot.meeting_date|date:"Y-m-d" }}","{{ slot.registration.time_desc|slice:":4" }}","{{ slot.registration.time_desc|slice:"5:9" }}","Registration","{{ venue.reg_area_name }}","","","","{{ slot.registration.name }}","r{{slot.day_id}}","",""
|
||||
{% endif %}{% endifchanged %}{% if slot.session_name %}{% if slot.break_info %}"{{ slot.meeting_date|date:"Y-m-d" }}","{{ slot.break_info.time_desc|slice:":4" }}","{{ slot.break_info.time_desc|slice:"5:9" }}","Break","{{ venue.break_area_name }}","","","","{{ slot.break_info.name }}","b{{slot.time_id}}","",""
|
||||
{% endif %}{% endif %}{% for session in slot.sessions_by_area %}"{{ slot.meeting_date|date:"Y-m-d" }}","{{ slot.time_desc|slice:":4" }}","{{ slot.time_desc|slice:"5:9" }}","{{ slot.session_name }}","{{ session.info.room_id.room_name }}","{{ session.info.area|upper }}","{{ session.info.acronym }}","{{ session.info.group_type_str }}","{{ session.info.acronym_name }}","{{session.info.pk}}","{% if session.info.agenda_file %}http://datatracker.ietf.org/meeting/{{ meeting.num }}/agenda/{{ session.info.acronym }}/{% endif %}","{% if session.info.slides %}{% for slide in session.info.slides %}http://www.ietf.org/proceedings/{{ slide.file_loc }}{% if not forloop.last %}|{% endif %}{% endfor %}{% endif %}"
|
||||
{% endfor %}{% endfor %}{% endautoescape %}
|
||||
{% load humanize %}{% autoescape off %}{% load ietf_filters %}"Date","Start","End","Session","Room","Area","Acronym","Type","Description","Session ID","Agenda","Slides"{% for item in schedule.assignments.all.distinct %}
|
||||
|
||||
{% if item.timeslot.type.slug == "break" %}
|
||||
|
||||
"{{ item.timeslot.time|date:"Y-m-d" }}","{{ item.timeslot.time_desc|slice:":4" }}","{{ item.timeslot.time_desc|slice:"5:9" }}","Break","{{ schedule.meeting.break_area}}","","","","{{ item.timeslot.name }}","b{{ item.timeslot.pk }}","",""
|
||||
|
||||
{% endif %}{% if item.timeslot.type.slug == "reg" %}
|
||||
|
||||
"{{ item.timeslot.time|date:"Y-m-d" }}","{{ item.timeslot.time_desc|slice:":4" }}","{{ item.timeslot.time_desc|slice:"5:9" }}","{{ item.timeslot.type.name }}","{{ schedule.meeting.reg_area }}","","","","{{ item.timeslot.name }}","r{{item.timeslot.pk}}","",""
|
||||
|
||||
{% endif %}{% if item.timeslot.type.slug == "other" %}
|
||||
|
||||
"{{ item.timeslot.time|date:"Y-m-d" }}","{{ item.timeslot.time_desc|slice:":4" }}","{{ item.timeslot.time_desc|slice:"5:9" }}","None","{{ item.timeslot.location.name }}","","{{ item.session.group.acronym }}","{% if item.session.group.parent %}{{item.session.group.parent.acronym|upper}}{% endif %}","{{ item.session.name }}","{{item.session.pk}}","",""
|
||||
|
||||
|
||||
{% endif %}{% if item.timeslot.type.slug == "plenary" %}
|
||||
|
||||
"{{ item.timeslot.time|date:"Y-m-d" }}","{{ item.timeslot.time_desc|slice:":4" }}","{{ item.timeslot.time_desc|slice:"5:9" }}","{{ item.session.name }}","{{ item.timeslot.location.name }}","","{{ item.session.group.acronym }}","","{{ item.session.name }}","{{item.session.pk}}","{% if item.session.agenda %}http://datatracker.ietf.org/meeting/{{ schedule.meeting.number }}/agenda/{{ item.session.agenda.external_url }}{% endif %}","{% if item.session.slides %}{% for slide in item.session.slides %}http://www.ietf.org/proceedings/{{ schedule.meeting.number }}/slides/{{ slide.external_url }}{% if not forloop.last %}|{% endif %}{% endfor %}{% endif %}"
|
||||
|
||||
{% endif %}{% if item.timeslot.type.slug == "session" and item.session.group %}
|
||||
|
||||
"{{ item.timeslot.time|date:"Y-m-d" }}","{{ item.timeslot.time_desc|slice:":4" }}","{{ item.timeslot.time_desc|slice:"5:9" }}","{{ item.timeslot.name }}","{{ item.timeslot.location.name }}","{{ item.session.group.parent.acronym|upper }}","{{ item.session.group.acronym }}","{{ item.session.type }}","{{ item.session.group.name }}","{{ item.session.pk}}","{% if item.session.agenda %}http://datatracker.ietf.org/meeting/{{ schedule.meeting.number }}/agenda/{{ item.session.agenda.external_url }}{% endif %}","{% if item.session.slides %}{% for slide in item.session.slides %}http://www.ietf.org/proceedings/{{ schedule.meeting.number }}/slides/{{ slide.external_url }}{% if not forloop.last %}|{% endif %}{% endfor %}{% endif %}"
|
||||
|
||||
|
||||
{% endif %}{% endfor %}{% endautoescape %}
|
||||
|
|
Can't render this file because it contains an unexpected character in line 1 and column 63.
|
|
@ -81,6 +81,7 @@ img.hidden { display: none; }
|
|||
{% endblock pagehead %}
|
||||
{% block bodyAttrs %}onload='setGroupState();updateAgendaColors()'{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>IETF {{ schedule.meeting.number }} Meeting Agenda</h1>
|
||||
|
||||
<p>{{ schedule.meeting.city }}, {{ schedule.meeting.date|date:"F j" }} – {% ifnotequal schedule.meeting.date.month schedule.meeting.end_date.month %}{{ schedule.meeting.end_date|date:"F " }}{% endifnotequal %}{{ schedule.meeting.end_date|date:"j, Y" }}<br />
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
{% load humanize %}{% autoescape off %}{% load ietf_filters %}BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH{% if vtimezone %}
|
||||
{{vtimezone}}{% endif %}{% for slot in timeslots %}
|
||||
BEGIN:VEVENT
|
||||
UID:ietf-{{slot.meeting.number}}-{{slot.pk}}
|
||||
SUMMARY:{% if slot.session.name %}{{slot.session.name}}{% else %}{% if slot.type.name == "Break" %}{{slot.name}}{% else %}{{slot.session.group.acronym|upper}} - {{slot.session.group.name}}{% endif%}{%endif%}
|
||||
{% if slot.show_location %}LOCATION:{{slot.get_location}}
|
||||
{% endif %}STATUS:TENTATIVE
|
||||
METHOD:PUBLISH
|
||||
PRODID:-//IETF//datatracker.ietf.org ical agenda//EN
|
||||
{{schedule.meeting.vtimezone}}{% for item in assignments %}{% if item.session.group %}BEGIN:VEVENT
|
||||
UID:ietf-{{schedule.meeting.number}}-{{item.timeslot.pk}}
|
||||
SUMMARY:{% if item.session.name %}{{item.session.name|ics_esc}}{% else %}{% if not item.session.group %}{{item.timeslot.name|ics_esc}}{% else %}{{item.session.group.acronym|lower}} - {{item.session.group.name}}{% endif%}{%endif%}
|
||||
{% if item.timeslot.show_location %}LOCATION:{{item.timeslot.get_location}}
|
||||
{% endif %}STATUS:{{item.session.ical_status}}
|
||||
CLASS:PUBLIC
|
||||
DTSTART{% if meeting.time_zone %};TZID="{{meeting.time_zone}}"{%endif%}:{{ slot.time|date:"Ymd" }}T{{slot.time|date:"Hi"}}00
|
||||
DTEND{% if meeting.time_zone %};TZID="{{meeting.time_zone}}"{%endif%}:{{ slot.end_time|date:"Ymd" }}T{{slot.end_time|date:"Hi"}}00
|
||||
DTSTAMP:{{ slot.modified|date:"Ymd" }}T{{ slot.modified|date:"His" }}Z
|
||||
{% if slot.session.agenda %}URL:http://www.ietf.org{{slot.session.agenda.get_absolute_url}}
|
||||
DESCRIPTION:{{slot.name}}\n{% if slot.session.agenda_note %}
|
||||
Note: {{slot.session.agenda_note}}\n{% endif %}{% for material in slot.session.materials.all %}
|
||||
DTSTART{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.time|date:"Ymd" }}T{{item.timeslot.time|date:"Hi"}}00
|
||||
DTEND{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.end_time|date:"Ymd" }}T{{item.timeslot.end_time|date:"Hi"}}00
|
||||
DTSTAMP:{{ item.timeslot.modified|date:"Ymd" }}T{{ item.timeslot.modified|date:"His" }}Z
|
||||
{% if item.session.agenda %}URL:{{item.session.agenda.get_absolute_url}}
|
||||
DESCRIPTION:{{item.timeslot.name|ics_esc}}\n{% if item.session.agenda_note %}
|
||||
Note: {{item.session.agenda_note|ics_esc}}\n{% endif %}{% for material in item.session.materials.all %}
|
||||
\n{{material.type}}{% if material.type.name != "Agenda" %}
|
||||
({{material.title}}){% endif %}:
|
||||
({{material.title|ics_esc}}){% endif %}:
|
||||
http://www.ietf.org{{material.get_absolute_url}}\n{% endfor %}
|
||||
{% endif %}END:VEVENT{% endfor %}
|
||||
END:VCALENDAR{% endautoescape %}
|
||||
{% endif %}END:VEVENT
|
||||
{% endif %}{% endfor %}END:VCALENDAR{% endautoescape %}
|
||||
|
|
Loading…
Reference in a new issue