Merged [2946] from adam@nostrum.com:

Added ical-format agenda (http://trac.tools.ietf.org/tools/ietfdb/ticket/601)
 - Legacy-Id: 2954
Note: SVN reference [2946] has been migrated to Git commit fe3189ba04734ac21d8c18fba99b289abc0bd358
This commit is contained in:
Henrik Levkowetz 2011-03-26 14:33:51 +00:00
parent f29a8fb2c6
commit 97b48252b1
6 changed files with 85 additions and 2 deletions

View file

@ -8,10 +8,12 @@ urlpatterns = patterns('',
(r'^agenda/$', views.html_agenda),
(r'^agenda(?:.html)?$', views.html_agenda),
(r'^agenda.txt$', views.text_agenda),
(r'^agenda.ics$', views.ical_agenda),
(r'^agenda/week-view.html$', views.week_view),
(r'^week-view.html$', views.week_view),
(r'^(?P<num>\d+)/agenda(?:.html)?/?$', views.html_agenda),
(r'^(?P<num>\d+)/agenda.txt$', views.text_agenda),
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
(r'^(?P<num>\d+)/week-view.html$', views.week_view),
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),

View file

@ -321,3 +321,20 @@ def week_view(request, num=None):
"rg_list" : rgs, "area_list" : areas},
context_instance=RequestContext(request))
def ical_agenda(request, num=None):
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
rgs = IRTF.objects.all().order_by('acronym')
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
filter = (request.META['QUERY_STRING']).lower().split(',');
include = set(filter)
for slot in timeslots:
for session in slot.sessions():
if session.area() == '' or session.area().find('plenary') > 0 or (session.area().lower() in include):
filter.append(session.acronym())
return HttpResponse(render_to_string("meeting/agenda.ics",
{"filter":set(filter), "timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, },
RequestContext(request)), mimetype="text/calendar")

View file

@ -255,16 +255,22 @@ class MeetingTime(models.Model):
for s in sessions:
if s.sched_time_id1_id == self.time_id:
s.room_id = s.sched_room_id1
s.ordinality = 1
elif s.sched_time_id2_id == self.time_id:
s.room_id = s.sched_room_id2
s.ordinality = 2
elif s.sched_time_id3_id == self.time_id:
s.room_id = s.sched_room_id3
s.ordinality = 3
elif s.combined_time_id1_id == self.time_id:
s.room_id = s.combined_room_id1
s.ordinality = 4
elif s.combined_time_id2_id == self.time_id:
s.room_id = s.combined_room_id2
s.ordinality = 5
else:
s.room_id = 0
s.ordinality = 0
return sessions
def sessions_by_area(self):
return [ {"area":session.area()+session.acronym(), "info":session} for session in self.sessions() ]

View file

@ -19,7 +19,13 @@ table#wg-selector { border:1px solid black; border-collapse:collapse; }
#wg-selector-triangle-down { vertical-align: text-top; }
#weekview.hidden { display: none; }
#weekview { border: none; margin: 10px 0 0 0;}
#weekview { border: none; margin: 0 0 0 0;}
#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; }
#ical-link A:visited { color: #FFFFFF; }
#ical-link A:active { color: #FF00FF; }
#ical-link A:hover { color: #FF0000; }
img.hidden { display: none; }
@ -61,6 +67,8 @@ img.hidden { display: none; }
if (frag == lastfrag) { return; }
var weekview = document.getElementById('weekview');
var ical_link = document.getElementById('ical-link');
var ical_href = document.getElementById('ical-href');
lastfrag = frag;
@ -70,10 +78,13 @@ img.hidden { display: none; }
{
weekview.setAttribute("src","week-view.html#"+frag);
weekview.className = '';
ical_href.setAttribute("href","agenda.ics?"+frag);
ical_link.className = '';
}
else
{
weekview.className = 'hidden';
ical_link.className = 'hidden';
}
var selectors = document.getElementsByTagName('div');
@ -244,6 +255,8 @@ You can customize the agenda below to show only selected working group sessions.
</tr>
</table>
<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>
<iframe id="weekview" class="hidden" width="100%" height="600px" src="about:blank"></iframe>
<table id="agenda" width="100%">

View file

@ -0,0 +1,44 @@
{% load humanize %}{% autoescape off %}{% load ietf_filters %}BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:{% now "T" %}
BEGIN:STANDARD
TZOFFSETFROM:{% now "O" %}
TZOFFSETTO:{% now "O" %}
TZNAME:{% now "T" %}
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
{% if meeting.time_zone %}BEGIN:VTIMEZONE
TZID:{{meeting.city}}
BEGIN:STANDARD
TZOFFSETFROM:{{meeting.time_zone|stringformat:"+02.2d"}}00
TZOFFSETTO:{{meeting.time_zone|stringformat:"+02.2d"}}00
TZNAME:{{meeting.city}}
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
{% endif %}{% for slot in timeslots %}{% ifchanged %}{% if slot.session_name and slot.break_info %}BEGIN:VEVENT
UID:ietf-{{meeting.num}}-break-{{slot.time_id}}
SUMMARY:{{slot.break_info.name}}
{% if venue.break_area_name and slot.break_info.show_break_location %}LOCATION:{{venue.break_area_name}}
{% endif %}STATUS:TENTATIVE
CLASS:PUBLIC
DTSTART{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.break_info.time_desc|slice:":4"}}00
DTEND{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.break_info.time_desc|slice:"5:9"}}00
DTSTAMP;TZID="{% now "T" %}":{% now "Ymd" %}T{% now "Gis" %}
END:VEVENT
{% endif %}{% endifchanged %}{% for session in slot.sessions %}{%for f in filter%}{%ifequal f session.acronym%}BEGIN:VEVENT
UID:ietf-{{meeting.num}}-{{session.acronym}}-{{session.ordinality}}
SUMMARY:{% if session.area %}{% ifnotequal session.area "1plenary" %}{{session.acronym|upper}} - {% endifnotequal %}{% endif %}{{session.acronym_name}}
LOCATION:{{session.room_id.room_name}}
STATUS:TENTATIVE
CLASS:PUBLIC
DTSTART{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.time_desc|slice:":4"}}00
DTEND{% if meeting.time_zone %};TZID="{{meeting.city}}"{%endif%}:{{ slot.meeting_date|date:"Ymd" }}T{{slot.time_desc|slice:"5:9"}}00
DTSTAMP;TZID="{% now "T" %}":{% now "Ymd" %}T{% now "Gis" %}
{% if session.description %}DESCRIPTION:
{{ session.description|escapejs }}
{% endif %}END:VEVENT
{%endifequal%}{%endfor%}{% endfor %}{% endfor %}END:VCALENDAR{% endautoescape %}

View file

@ -128,9 +128,10 @@ function draw_calendar()
e.style.border="solid";
e.style.borderWidth=border;
e.style.background="#000";
e.style.background="#2647a0";
e.style.color="#fff";
e.style.borderColor="#000 #fff";
e.style.borderColor="#2647a0 #2647a0 #000 #2647a0";
e.style.display="block";
e.style.overflow="hidden";