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:
parent
f29a8fb2c6
commit
97b48252b1
|
@ -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),
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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() ]
|
||||
|
|
|
@ -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%">
|
||||
|
|
44
ietf/templates/meeting/agenda.ics
Normal file
44
ietf/templates/meeting/agenda.ics
Normal 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 %}
|
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue