Skip to content

Commit 951670e

Browse files
committed
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
1 parent c61d1d1 commit 951670e

6 files changed

Lines changed: 136 additions & 117 deletions

File tree

ietf/meeting/urls.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,28 @@
88
urlpatterns = patterns('',
99
(r'^(?P<meeting_num>\d+)/materials.html$', views.materials),
1010
(r'^agenda/$', views.agenda),
11-
(r'^agenda-utc(?:.html)?$', views.html_agenda_utc),
12-
(r'^agenda(?:.html)?$', views.agenda),
11+
(r'^(?P<base>agenda-utc)(?P<ext>.html)?$', views.agenda),
12+
(r'^agenda(?P<ext>.html)?$', views.agenda),
1313
(r'^agenda/edit$', views.edit_agenda),
1414
(r'^requests.html$', redirect_to, {"url": '/meeting/requests', "permanent": True}),
1515
(r'^requests$', views.meeting_requests),
1616
(r'^agenda(?P<ext>.txt)$', views.agenda),
1717
(r'^agenda/agenda.ics$', views.ical_agenda),
1818
(r'^agenda.ics$', views.ical_agenda),
19-
(r'^agenda.csv$', views.csv_agenda),
19+
(r'^agenda(?P<ext>.csv)$', views.agenda),
2020
(r'^agenda/week-view.html$', views.week_view),
2121
(r'^week-view.html$', views.week_view),
2222
(r'^(?P<num>\d+)/schedule/edit$', views.edit_agenda),
2323
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)/edit$', views.edit_agenda),
2424
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)/details$', views.edit_agenda_properties),
2525
(r'^(?P<num>\d+)/schedule/(?P<name>[A-Za-z0-9-:_]+)(?P<ext>.html)?/?$', views.agenda),
2626
(r'^(?P<num>\d+)/agenda(?P<ext>.html)?/?$', views.agenda),
27-
(r'^(?P<num>\d+)/agenda-utc(?:.html)?/?$', views.html_agenda_utc),
27+
(r'^(?P<num>\d+)/(?P<base>agenda-utc)(?P<ext>.html)?/?$', views.agenda),
2828
(r'^(?P<num>\d+)/requests.html$', redirect_to, {"url": '/meeting/%(num)s/requests', "permanent": True}),
2929
(r'^(?P<num>\d+)/requests$', views.meeting_requests),
3030
(r'^(?P<num>\d+)/agenda(?P<ext>.txt)$', views.agenda),
3131
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
32-
(r'^(?P<num>\d+)/agenda.csv$', views.csv_agenda),
32+
(r'^(?P<num>\d+)/agenda(?P<ext>.csv)$', views.agenda),
3333
(r'^(?P<num>\d+)/agendas/edit$', views.edit_agendas),
3434
(r'^(?P<num>\d+)/timeslots/edit$', views.edit_timeslots),
3535
(r'^(?P<num>\d+)/rooms$', ajax.timeslot_roomsurl),

ietf/meeting/views.py

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -432,14 +432,14 @@ def iphone_agenda(request, num, name):
432432
"wg_list" : wgs, "rg_list" : rgs, "area_list" : areas},
433433
context_instance=RequestContext(request))
434434

435-
def agenda(request, num=None, name=None, ext=".html"):
436-
if ext is None:
437-
ext = ".html"
435+
def agenda(request, num=None, name=None, base=None, ext=None):
436+
base = base if base else 'agenda'
437+
ext = ext if ext else '.html'
438438
mimetype = {".html":"text/html", ".txt": "text/plain", ".ics":"text/calendar", ".csv":"text/csv"}
439439
meeting = get_meeting(num)
440440
schedule = get_schedule(meeting, name)
441441
updated = Switches().from_object(meeting).updated()
442-
return HttpResponse(render_to_string("meeting/agenda"+ext,
442+
return HttpResponse(render_to_string("meeting/"+base+ext,
443443
{"schedule":schedule, "updated": updated}, RequestContext(request)), mimetype=mimetype[ext])
444444

445445
def read_agenda_file(num, doc):
@@ -633,13 +633,15 @@ def week_view(request, num=None):
633633
return render_to_response(template,
634634
{"timeslots":timeslots,"render_types":["Session","Other","Break","Plenary"]}, context_instance=RequestContext(request))
635635

636-
def ical_agenda(request, num=None, name=None):
636+
def ical_agenda(request, num=None, name=None, ext=None):
637637
meeting = get_meeting(num)
638+
schedule = get_schedule(meeting, name)
639+
updated = Switches().from_object(meeting).updated()
638640

639641
q = request.META.get('QUERY_STRING','') or ""
640-
filter = urllib.unquote(q).lower().split(',');
641-
include = set(filter)
642-
include_types = set(["Plenary","Other"])
642+
filter = set(urllib.unquote(q).lower().split(','))
643+
include = [ i for i in filter if not (i.startswith('-') or i.startswith('~')) ]
644+
include_types = set(["plenary","other"])
643645
exclude = []
644646

645647
# Process the special flags.
@@ -651,38 +653,26 @@ def ical_agenda(request, num=None, name=None):
651653
# Non-Working Group "wg names" include:
652654
# edu, ietf, tools, iesg, iab
653655

654-
for item in include:
656+
for item in filter:
655657
if item:
656658
if item[0] == '-' and item[1] == '~':
657-
include_types -= set([item[2:3].upper()+item[3:]])
659+
include_types -= set([item[2:]])
658660
elif item[0] == '-':
659661
exclude.append(item[1:])
660662
elif item[0] == '~':
661-
include_types |= set([item[1:2].upper()+item[2:]])
663+
include_types |= set([item[1:]])
662664

663-
timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id),
664-
Q(type__name__in = include_types) |
665-
Q(sessions__group__acronym__in = filter) |
666-
Q(sessions__group__parent__acronym__in = filter)
667-
).exclude(Q(sessions__group__acronym__in = exclude)).distinct()
665+
assignments = schedule.assignments.filter(
666+
Q(timeslot__type__slug__in = include_types) |
667+
Q(session__group__acronym__in = include) |
668+
Q(session__group__parent__acronym__in = include)
669+
).exclude(session__group__acronym__in = exclude).distinct()
668670
#.exclude(Q(session__group__isnull = False),
669671
#Q(session__group__acronym__in = exclude) |
670672
#Q(session__group__parent__acronym__in = exclude))
671673

672-
if meeting.time_zone:
673-
try:
674-
tzfn = os.path.join(settings.TZDATA_ICS_PATH, meeting.time_zone + ".ics")
675-
tzf = open(tzfn)
676-
icstext = tzf.read()
677-
vtimezone = re.search("(?sm)(\nBEGIN:VTIMEZONE.*\nEND:VTIMEZONE\n)", icstext).group(1).strip()
678-
tzf.close()
679-
except IOError:
680-
vtimezone = None
681-
else:
682-
vtimezone = None
683-
684674
return HttpResponse(render_to_string("meeting/agenda.ics",
685-
{"timeslots":timeslots, "meeting":meeting, "vtimezone": vtimezone },
675+
{"schedule":schedule, "assignments":assignments, "updated":updated},
686676
RequestContext(request)), mimetype="text/calendar")
687677

688678
def csv_agenda(request, num=None, name=None):

0 commit comments

Comments
 (0)