From ec6f0aed8d5340b570aa10074af8510d217e4d12 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Mon, 23 Mar 2020 18:39:45 +0000
Subject: [PATCH] Changed the page for upcoming meetings to show the current
 IETF meeting for 7 days from its start date, while interims are shown for
 today and forward.  Also changed the upcoming.ics calendar to show future
 sessions, even if the meeting to which they belong started in the past.  This
 improves on [17518].  - Legacy-Id: 17520 Note: SVN reference [17518] has been
 migrated to Git commit 0de5a4912afb62f21d5a45e77d1e9f296c4122f9

---
 ietf/meeting/views.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py
index 2f852e7b7..bdd61151a 100644
--- a/ietf/meeting/views.py
+++ b/ietf/meeting/views.py
@@ -2233,9 +2233,12 @@ def past(request):
 
 def upcoming(request):
     '''List of upcoming meetings'''
-    today = datetime.datetime.today() - datetime.timedelta(days=7)
+    today = datetime.date.today()
 
-    meetings, group_parents = data_for_meetings_overview(Meeting.objects.filter(date__gte=today).order_by('date'))
+    # Get ietf meetings starting 7 days ago, and interim meetings starting today
+    query = Q(type_id='ietf', date__gte=today-datetime.timedelta(days=7)) | Q(type_id='interim', date__gte=today)
+    meetings = Meeting.objects.filter(query).order_by('date')
+    meetings, group_parents = data_for_meetings_overview(meetings)
 
     # add menu entries
     menu_entries = get_interim_menu_entries(request)
@@ -2260,13 +2263,15 @@ def upcoming(request):
 def upcoming_ical(request):
     '''Return Upcoming meetings in iCalendar file'''
     filters = request.GET.getlist('filters')
-    today = datetime.datetime.today() - datetime.timedelta(days=7)
+    today = datetime.date.today()
 
-    meetings, _ = data_for_meetings_overview(Meeting.objects.filter(date__gte=today).order_by('date'))
+    # get meetings starting 7 days ago -- we'll filter out sessions in the past further down
+    meetings, _ = data_for_meetings_overview(Meeting.objects.filter(date__gte=today-datetime.timedelta(days=7)).order_by('date'))
 
     assignments = list(SchedTimeSessAssignment.objects.filter(
         schedule__meeting__schedule=F('schedule'),
-        session__in=[s.pk for m in meetings for s in m.sessions]
+        session__in=[s.pk for m in meetings for s in m.sessions],
+        timeslot__time__gte=today,
     ).order_by(
         'schedule__meeting__date', 'session__type', 'timeslot__time'
     ).select_related(