8181from ietf .meeting .utils import preprocess_constraints_for_meeting_schedule_editor
8282from ietf .meeting .utils import diff_meeting_schedules , prefetch_schedule_diff_objects
8383from ietf .meeting .utils import swap_meeting_schedule_timeslot_assignments
84+ from ietf .meeting .utils import preprocess_meeting_important_dates
8485from ietf .message .utils import infer_message
8586from ietf .secr .proceedings .utils import handle_upload_file
8687from ietf .secr .proceedings .proc_utils import (get_progress_stats , post_process , import_audio_files ,
@@ -3246,7 +3247,7 @@ def upcoming_ical(request):
32463247
32473248 assignments = list (SchedTimeSessAssignment .objects .filter (
32483249 schedule__in = [m .schedule_id for m in meetings ] + [m .schedule .base_id for m in meetings if m .schedule ],
3249- session__in = [s .pk for m in meetings for s in m .sessions ],
3250+ session__in = [s .pk for m in meetings for s in m .sessions if m . type_id != 'ietf' ],
32503251 timeslot__time__gte = today ,
32513252 ).order_by (
32523253 'schedule__meeting__date' , 'session__type' , 'timeslot__time'
@@ -3270,17 +3271,16 @@ def upcoming_ical(request):
32703271 a .session = sessions .get (a .session_id ) or a .session
32713272 a .session .ical_status = ical_session_status (a )
32723273
3273- # gather vtimezones
3274- vtimezones = set ()
3275- for meeting in meetings :
3276- if meeting .vtimezone ():
3277- vtimezones .add (meeting .vtimezone ())
3278- vtimezones = '' .join (vtimezones )
3274+ # handle IETFs separately
3275+ ietfs = [m for m in meetings if m .type_id == 'ietf' ]
3276+ preprocess_meeting_important_dates (ietfs )
32793277
32803278 # icalendar response file should have '\r\n' line endings per RFC5545
32813279 response = render_to_string ('meeting/upcoming.ics' , {
3282- 'vtimezones' : vtimezones ,
3283- 'assignments' : assignments })
3280+ 'vtimezones' : '' .join ({meeting .vtimezone () for meeting in meetings if meeting .vtimezone ()}),
3281+ 'assignments' : assignments ,
3282+ 'ietfs' : ietfs ,
3283+ }, request = request )
32843284 response = re .sub ("\r (?!\n )|(?<!\r )\n " , "\r \n " , response )
32853285
32863286 response = HttpResponse (response , content_type = 'text/calendar' )
@@ -3603,11 +3603,7 @@ def important_dates(request, num=None, output_format=None):
36033603 meetings .append (future_meeting )
36043604
36053605 if output_format == 'ics' :
3606- for m in meetings :
3607- m .cached_updated = m .updated ()
3608- m .important_dates = m .importantdate_set .prefetch_related ("name" )
3609- for d in m .important_dates :
3610- d .midnight_cutoff = "UTC 23:59" in d .name .name
3606+ preprocess_meeting_important_dates (meetings )
36113607
36123608 ics = render_to_string ('meeting/important_dates.ics' , {
36133609 'meetings' : meetings ,
0 commit comments