Skip to content

Commit fe3189b

Browse files
committed
- Legacy-Id: 2946
1 parent 109799b commit fe3189b

6 files changed

Lines changed: 85 additions & 2 deletions

File tree

adam/ietf/meeting/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
(r'^agenda/$', views.html_agenda),
99
(r'^agenda(?:.html)?$', views.html_agenda),
1010
(r'^agenda.txt$', views.text_agenda),
11+
(r'^agenda.ics$', views.ical_agenda),
1112
(r'^agenda/week-view.html$', views.week_view),
1213
(r'^week-view.html$', views.week_view),
1314
(r'^(?P<num>\d+)/agenda(?:.html)?/?$', views.html_agenda),
1415
(r'^(?P<num>\d+)/agenda.txt$', views.text_agenda),
16+
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
1517
(r'^(?P<num>\d+)/week-view.html$', views.week_view),
1618
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
1719
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),

adam/ietf/meeting/views.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,3 +321,20 @@ def week_view(request, num=None):
321321
"rg_list" : rgs, "area_list" : areas},
322322
context_instance=RequestContext(request))
323323

324+
def ical_agenda(request, num=None):
325+
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
326+
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
327+
rgs = IRTF.objects.all().order_by('acronym')
328+
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
329+
filter = (request.META['QUERY_STRING']).lower().split(',');
330+
include = set(filter)
331+
332+
for slot in timeslots:
333+
for session in slot.sessions():
334+
if session.area() == '' or session.area().find('plenary') > 0 or (session.area().lower() in include):
335+
filter.append(session.acronym())
336+
337+
return HttpResponse(render_to_string("meeting/agenda.ics",
338+
{"filter":set(filter), "timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
339+
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, },
340+
RequestContext(request)), mimetype="text/calendar")

adam/ietf/proceedings/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,16 +255,22 @@ def sessions(self):
255255
for s in sessions:
256256
if s.sched_time_id1_id == self.time_id:
257257
s.room_id = s.sched_room_id1
258+
s.ordinality = 1
258259
elif s.sched_time_id2_id == self.time_id:
259260
s.room_id = s.sched_room_id2
261+
s.ordinality = 2
260262
elif s.sched_time_id3_id == self.time_id:
261263
s.room_id = s.sched_room_id3
264+
s.ordinality = 3
262265
elif s.combined_time_id1_id == self.time_id:
263266
s.room_id = s.combined_room_id1
267+
s.ordinality = 4
264268
elif s.combined_time_id2_id == self.time_id:
265269
s.room_id = s.combined_room_id2
270+
s.ordinality = 5
266271
else:
267272
s.room_id = 0
273+
s.ordinality = 0
268274
return sessions
269275
def sessions_by_area(self):
270276
return [ {"area":session.area()+session.acronym(), "info":session} for session in self.sessions() ]

adam/ietf/templates/meeting/agenda.html

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@
1919
#wg-selector-triangle-down { vertical-align: text-top; }
2020

2121
#weekview.hidden { display: none; }
22-
#weekview { border: none; margin: 10px 0 0 0;}
22+
#weekview { border: none; margin: 0 0 0 0;}
23+
#ical-link.hidden { display: none; }
24+
#ical-link { margin: 10px 0 0 0; padding: 10px; text-align: center; background-color: #2647a0; color: #FFFFFF }
25+
#ical-link A:link { color: #FFFFFF; }
26+
#ical-link A:visited { color: #FFFFFF; }
27+
#ical-link A:active { color: #FF00FF; }
28+
#ical-link A:hover { color: #FF0000; }
2329

2430
img.hidden { display: none; }
2531

@@ -61,6 +67,8 @@
6167
if (frag == lastfrag) { return; }
6268

6369
var weekview = document.getElementById('weekview');
70+
var ical_link = document.getElementById('ical-link');
71+
var ical_href = document.getElementById('ical-href');
6472

6573
lastfrag = frag;
6674

@@ -70,10 +78,13 @@
7078
{
7179
weekview.setAttribute("src","week-view.html#"+frag);
7280
weekview.className = '';
81+
ical_href.setAttribute("href","agenda.ics?"+frag);
82+
ical_link.className = '';
7383
}
7484
else
7585
{
7686
weekview.className = 'hidden';
87+
ical_link.className = 'hidden';
7788
}
7889

7990
var selectors = document.getElementsByTagName('div');
@@ -244,6 +255,8 @@ <h1>IETF {{ meeting.num }} Meeting Agenda</h1>
244255
</tr>
245256
</table>
246257

258+
<div id="ical-link" class="hidden"><span style="font-size:150%">Week View</span><br/><a id="ical-href" href="agenda.ics"><em>Download as an ical file</em></a></div>
259+
247260
<iframe id="weekview" class="hidden" width="100%" height="600px" src="about:blank"></iframe>
248261

249262
<table id="agenda" width="100%">
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{% load humanize %}{% autoescape off %}{% load ietf_filters %}BEGIN:VCALENDAR
2+
VERSION:2.0
3+
METHOD:PUBLISH
4+
BEGIN:VTIMEZONE
5+
TZID:{% now "T" %}
6+
BEGIN:STANDARD
7+
TZOFFSETFROM:{% now "O" %}
8+
TZOFFSETTO:{% now "O" %}
9+
TZNAME:{% now "T" %}
10+
DTSTART:19700101T000000
11+
END:STANDARD
12+
END:VTIMEZONE
13+
{% if meeting.time_zone %}BEGIN:VTIMEZONE
14+
TZID:{{meeting.city}}
15+
BEGIN:STANDARD
16+
TZOFFSETFROM:{{meeting.time_zone|stringformat:"+02.2d"}}00
17+
TZOFFSETTO:{{meeting.time_zone|stringformat:"+02.2d"}}00
18+
TZNAME:{{meeting.city}}
19+
DTSTART:19700101T000000
20+
END:STANDARD
21+
END:VTIMEZONE
22+
{% endif %}{% for slot in timeslots %}{% ifchanged %}{% if slot.session_name and slot.break_info %}BEGIN:VEVENT
23+
UID:ietf-{{meeting.num}}-break-{{slot.time_id}}
24+
SUMMARY:{{slot.break_info.name}}
25+
{% if venue.break_area_name and slot.break_info.show_break_location %}LOCATION:{{venue.break_area_name}}
26+
{% endif %}STATUS:TENTATIVE
27+
CLASS:PUBLIC
28+
DTSTART{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.break_info.time_desc|slice:":4"}}00
29+
DTEND{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.break_info.time_desc|slice:"5:9"}}00
30+
DTSTAMP;TZID="{% now "T" %}":{% now "Ymd" %}T{% now "Gis" %}
31+
END:VEVENT
32+
{% endif %}{% endifchanged %}{% for session in slot.sessions %}{%for f in filter%}{%ifequal f session.acronym%}BEGIN:VEVENT
33+
UID:ietf-{{meeting.num}}-{{session.acronym}}-{{session.ordinality}}
34+
SUMMARY:{% if session.area %}{% ifnotequal session.area "1plenary" %}{{session.acronym|upper}} - {% endifnotequal %}{% endif %}{{session.acronym_name}}
35+
LOCATION:{{session.room_id.room_name}}
36+
STATUS:TENTATIVE
37+
CLASS:PUBLIC
38+
DTSTART{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.time_desc|slice:":4"}}00
39+
DTEND{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.time_desc|slice:"5:9"}}00
40+
DTSTAMP;TZID="{% now "T" %}":{% now "Ymd" %}T{% now "Gis" %}
41+
{% if session.description %}DESCRIPTION:
42+
{{ session.description|escapejs }}
43+
{% endif %}END:VEVENT
44+
{%endifequal%}{%endfor%}{% endfor %}{% endfor %}END:VCALENDAR{% endautoescape %}

adam/ietf/templates/meeting/week-view.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,10 @@
128128
e.style.border="solid";
129129
e.style.borderWidth=border;
130130

131-
e.style.background="#000";
131+
e.style.background="#2647a0";
132132
e.style.color="#fff";
133133
e.style.borderColor="#000 #fff";
134+
e.style.borderColor="#2647a0 #2647a0 #000 #2647a0";
134135

135136
e.style.display="block";
136137
e.style.overflow="hidden";

0 commit comments

Comments
 (0)