From 86dd2b2e67d23a6a420d5c914bacc2e013e12f6f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 26 Jan 2021 14:51:55 +0000 Subject: [PATCH] Integrate week-view timezone handling with changes to main agenda page. Commit ready for merge. - Legacy-Id: 18803 --- ietf/meeting/tests_js.py | 13 +++-- ietf/meeting/views.py | 1 - ietf/static/ietf/js/agenda/timezone.js | 11 +++- ietf/templates/meeting/agenda.html | 75 +++++++++++++------------- ietf/templates/meeting/week-view.html | 4 +- 5 files changed, 59 insertions(+), 45 deletions(-) diff --git a/ietf/meeting/tests_js.py b/ietf/meeting/tests_js.py index 1c1447a79..a407d5db1 100644 --- a/ietf/meeting/tests_js.py +++ b/ietf/meeting/tests_js.py @@ -917,7 +917,7 @@ class WeekviewTests(MeetingTestCase): return expected_items def test_timezone_default(self): - """Week view should show local times by default""" + """Week view should show UTC times by default""" self.assertNotEqual(self.meeting.time_zone.lower(), 'utc', 'Cannot test local time weekview because meeting is using UTC time.') self.login() @@ -929,8 +929,8 @@ class WeekviewTests(MeetingTestCase): expected_name = item.timeslot.name else: expected_name = item.session.group.name - expected_time = '-'.join([item.timeslot.local_start_time().strftime('%H%M'), - item.timeslot.local_end_time().strftime('%H%M')]) + expected_time = '-'.join([item.timeslot.utc_start_time().strftime('%H%M'), + item.timeslot.utc_end_time().strftime('%H%M')]) WebDriverWait(self.driver, 2).until( expected_conditions.presence_of_element_located( (By.XPATH, @@ -974,7 +974,7 @@ class WeekviewTests(MeetingTestCase): def test_event_wrapping(self): """Events that overlap midnight should be shown on both days - This assumes that the meeting is in America/New_York timezone. + This assumes that the meeting is in US/Eastern timezone. """ def _assert_wrapped(displayed, expected_time_string): self.assertEqual(len(displayed), 2) @@ -995,6 +995,9 @@ class WeekviewTests(MeetingTestCase): self.assertIn(expected_time_string, first_parent.text) duration = datetime.timedelta(minutes=120) # minutes + local_tz = self.meeting.time_zone + self.assertEqual(local_tz.lower(), 'us/eastern', + 'Test logic error - meeting local time zone must be US/Eastern') # Session during a single day in meeting local time but multi-day UTC # Compute a time that overlaps midnight, UTC, but won't when shifted to a local time zone @@ -1046,7 +1049,7 @@ class WeekviewTests(MeetingTestCase): self.login() # Test in meeting local time - self.driver.get(self.absreverse('ietf.meeting.views.week_view')) + self.driver.get(self.absreverse('ietf.meeting.views.week_view') + '?tz=%s' % local_tz.lower()) time_string = '-'.join([daytime_timeslot.local_start_time().strftime('%H%M'), daytime_timeslot.local_end_time().strftime('%H%M')]) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index c50abde48..ebe06a0ad 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1765,7 +1765,6 @@ def week_view(request, num=None, name=None, owner=None): return render(request, "meeting/week-view.html", { "items": json.dumps(items), - "timezone": meeting.time_zone, }) @role_required('Area Director','Secretariat','IAB') diff --git a/ietf/static/ietf/js/agenda/timezone.js b/ietf/static/ietf/js/agenda/timezone.js index 914bc8eb8..22f04175a 100644 --- a/ietf/static/ietf/js/agenda/timezone.js +++ b/ietf/static/ietf/js/agenda/timezone.js @@ -1,3 +1,6 @@ +// Callback for timezone change - called after current_timezone is updated +var timezone_change_callback; + // Initialize moments function initialize_moments() { var times=$('span.time') @@ -195,7 +198,9 @@ function update_times(newtz) { }); update_tooltips_all(); update_clock(); - // update_calendar(agenda_filter.get_filter()) + if (timezone_change_callback) { + timezone_change_callback(newtz); + } } // Highlight ongoing based on the current time @@ -253,3 +258,7 @@ function init_timers() { setInterval(function() { update_tooltips_all(); }, 3600000 / speedup); } +// Register a callback for timezone change +function set_tz_change_callback(cb) { + timezone_change_callback = cb; +} \ No newline at end of file diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index 00674d159..407932756 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -342,7 +342,9 @@ {% endblock %} diff --git a/ietf/templates/meeting/week-view.html b/ietf/templates/meeting/week-view.html index c91fa8eda..dfadb64d5 100644 --- a/ietf/templates/meeting/week-view.html +++ b/ietf/templates/meeting/week-view.html @@ -601,8 +601,8 @@ // Set up events for drawing the calendar function redraw_weekview() { var query_params = agenda_filter.parse_query_params(window.location.search); - var timezone_name = query_params.tz || '{{ timezone }}'; - + var timezone_name = query_params.tz || 'utc'; + items = prepare_items(all_items, timezone_name); draw_calendar(items, agenda_filter.get_filter_params(query_params)); }