@@ -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
445445def 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)(\n BEGIN:VTIMEZONE.*\n END: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
688678def csv_agenda (request , num = None , name = None ):
0 commit comments