From 0c8db80b184b7bf1c12f34b6022bb5d2f24e072e Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Wed, 7 Aug 2024 12:23:18 -0400 Subject: [PATCH] fix: Show recordings for interims (#7197) * fix: Show recordings for interims Add methods uses_notes(), has_recordings(), and uses_chat_logs() to the meeting object (with semantically correct tests) and use them consistently throughout. List the recordings if the "meeting numnber" starts with "interim" Fixes: #6543 * style: Use "is not" and "is" for None comparisons * None comparison and non-IETF meetings style: Use "is not None" instead of "!=" For non-IETF meetings assume chat logs exist * fix: Restore useNotes for JS fields * fix: uses_notes->useNotes (in JavaScript) Also add comment about meeting number field in tests * Missed a uses_notes->useNotes edit * fix: useNotes->usesNotes --------- Co-authored-by: Jennifer Richards Co-authored-by: Robert Sparks --- client/agenda/AgendaScheduleList.vue | 2 +- client/agenda/store.js | 4 ++-- ietf/doc/views_doc.py | 14 +++++++------- ietf/meeting/models.py | 17 ++++++++++++++++- ietf/meeting/tests_views.py | 2 +- ietf/meeting/views.py | 4 +--- ietf/templates/group/meetings-row.html | 4 ++-- .../meeting/interim_session_buttons.html | 2 +- .../meeting/session_buttons_include.html | 12 ++++++------ .../meeting/session_details_panel.html | 8 ++++---- ietf/templates/meeting/upcoming.html | 2 +- playwright/helpers/meeting.js | 2 +- 12 files changed, 43 insertions(+), 30 deletions(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 9db763b74..a6d2b9a5a 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -296,7 +296,7 @@ const meetingEvents = computed(() => { color: 'red' }) } - if (agendaStore.useNotes) { + if (agendaStore.usesNotes) { links.push({ id: `lnk-${item.id}-note`, label: 'Notepad for note-takers', diff --git a/client/agenda/store.js b/client/agenda/store.js index 839d464c4..18c3e8c65 100644 --- a/client/agenda/store.js +++ b/client/agenda/store.js @@ -50,7 +50,7 @@ export const useAgendaStore = defineStore('agenda', { selectedCatSubs: [], settingsShown: false, timezone: DateTime.local().zoneName, - useNotes: false, + usesNotes: false, visibleDays: [] }), getters: { @@ -160,7 +160,7 @@ export const useAgendaStore = defineStore('agenda', { this.isCurrentMeeting = agendaData.isCurrentMeeting this.meeting = agendaData.meeting this.schedule = agendaData.schedule - this.useNotes = agendaData.useNotes + this.usesNotes = agendaData.usesNotes // -> Compute current info note hash this.infoNoteHash = murmur(agendaData.meeting.infoNote, 0).toString() diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 21c5eb235..bd4927508 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -996,7 +996,7 @@ def document_raw_id(request, name, rev=None, ext=None): for t in possible_types: if os.path.exists(base_path + t): found_types[t]=base_path+t - if ext == None: + if ext is None: ext = 'txt' if not ext in found_types: raise Http404('dont have the file for that extension') @@ -1227,7 +1227,7 @@ def document_bibtex(request, name, rev=None): raise Http404() # Make sure URL_REGEXPS did not grab too much for the rev number - if rev != None and len(rev) != 2: + if rev is not None and len(rev) != 2: mo = re.search(r"^(?P[0-9]{1,2})-(?P[0-9]{2})$", rev) if mo: name = name+"-"+mo.group(1) @@ -1250,7 +1250,7 @@ def document_bibtex(request, name, rev=None): replaced_by = [d.name for d in doc.related_that("replaces")] draft_became_rfc = doc.became_rfc() - if rev != None and rev != doc.rev: + if rev is not None and rev != doc.rev: # find the entry in the history for h in doc.history_set.order_by("-time"): if rev == h.rev: @@ -1291,7 +1291,7 @@ def document_bibxml(request, name, rev=None): raise Http404() # Make sure URL_REGEXPS did not grab too much for the rev number - if rev != None and len(rev) != 2: + if rev is not None and len(rev) != 2: mo = re.search(r"^(?P[0-9]{1,2})-(?P[0-9]{2})$", rev) if mo: name = name+"-"+mo.group(1) @@ -1439,7 +1439,7 @@ def document_referenced_by(request, name): if doc.type_id in ["bcp","std","fyi"]: for rfc in doc.contains(): refs |= rfc.referenced_by() - full = ( request.GET.get('full') != None ) + full = ( request.GET.get('full') is not None ) numdocs = refs.count() if not full and numdocs>250: refs=refs[:250] @@ -1459,7 +1459,7 @@ def document_ballot_content(request, doc, ballot_id, editable=True): augment_events_with_revision(doc, all_ballots) ballot = None - if ballot_id != None: + if ballot_id is not None: ballot_id = int(ballot_id) for b in all_ballots: if b.id == ballot_id: @@ -1661,7 +1661,7 @@ def add_comment(request, name): login = request.user.person - if doc.type_id == "draft" and doc.group != None: + if doc.type_id == "draft" and doc.group is not None: can_add_comment = bool(has_role(request.user, ("Area Director", "Secretariat", "IRTF Chair", "IANA", "RFC Editor")) or ( request.user.is_authenticated and Role.objects.filter(name__in=("chair", "secr"), diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index fa1ad9d67..d8a069ef3 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -383,7 +383,22 @@ class Meeting(models.Model): return Meeting.objects.filter(type_id=self.type_id,date__lt=self.date).order_by('-date').first() def uses_notes(self): - return self.date>=datetime.date(2020,7,6) + if self.type_id != 'ietf': + return True + num = self.get_number() + return num is not None and num >= 108 + + def has_recordings(self): + if self.type_id != 'ietf': + return True + num = self.get_number() + return num is not None and num >= 80 + + def has_chat_logs(self): + if self.type_id != 'ietf': + return True; + num = self.get_number() + return num is not None and num >= 60 def meeting_start(self): """Meeting-local midnight at the start of the meeting date""" diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 60eef96b2..e4f62838d 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -259,7 +259,7 @@ class MeetingTests(BaseMeetingTestCase): }, "categories": rjson.get("categories"), # Just expect the value to exist "isCurrentMeeting": True, - "useNotes": True, + "usesNotes": False, # make_meeting_test_data sets number=72 "schedule": rjson.get("schedule"), # Just expect the value to exist "floors": [] } diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index cf7c67ac4..211cdec9a 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1617,7 +1617,6 @@ def agenda_plain(request, num=None, name=None, base=None, ext=None, owner=None, "now": timezone.now().astimezone(meeting.tz()), "display_timezone": display_timezone, "is_current_meeting": is_current_meeting, - "use_notes": meeting.uses_notes(), "cache_time": 150 if is_current_meeting else 3600, }, content_type=mimetype[ext], @@ -1692,7 +1691,7 @@ def api_get_agenda_data (request, num=None): }, "categories": filter_organizer.get_filter_categories(), "isCurrentMeeting": is_current_meeting, - "useNotes": meeting.uses_notes(), + "usesNotes": meeting.uses_notes(), "schedule": list(map(agenda_extract_schedule, filtered_assignments)), "floors": list(map(agenda_extract_floorplan, floors)) }) @@ -2489,7 +2488,6 @@ def session_details(request, num, acronym): 'can_manage_materials' : can_manage, 'can_view_request': can_view_request, 'thisweek': datetime_today()-datetime.timedelta(days=7), - 'use_notes': meeting.uses_notes(), }) class SessionDraftsForm(forms.Form): diff --git a/ietf/templates/group/meetings-row.html b/ietf/templates/group/meetings-row.html index 57c727eea..3bbe1d425 100644 --- a/ietf/templates/group/meetings-row.html +++ b/ietf/templates/group/meetings-row.html @@ -78,9 +78,9 @@
{# see note in the included templates re: show_agenda parameter and required JS import #} {% if s.meeting.type.slug == 'interim' %} - {% include "meeting/interim_session_buttons.html" with show_agenda=False show_empty=False session=s meeting=s.meeting use_notes=s.meeting.use_notes %} + {% include "meeting/interim_session_buttons.html" with show_agenda=False show_empty=False session=s meeting=s.meeting %} {% else %} - {% include "meeting/session_buttons_include.html" with show_agenda=False item=s.official_timeslotassignment session=s meeting=s.meeting use_notes=s.meeting.use_notes %} + {% include "meeting/session_buttons_include.html" with show_agenda=False item=s.official_timeslotassignment session=s meeting=s.meeting %} {% endif %}
{% endif %} diff --git a/ietf/templates/meeting/interim_session_buttons.html b/ietf/templates/meeting/interim_session_buttons.html index 2f0951338..a32f4345c 100644 --- a/ietf/templates/meeting/interim_session_buttons.html +++ b/ietf/templates/meeting/interim_session_buttons.html @@ -34,7 +34,7 @@ {% endif %} {# notes #} - {% if use_notes %} + {% if session.agenda.uses_notes %} {% endif %} {# Notes #} - {% if use_notes %} + {% if meeting.uses_notes %} {% else %} {# chat logs #} - {% if meeting.number|add:"0" >= 60 %} + {% if meeting.has_chat_logs %} {% endif %} {# Recordings #} - {% if meeting.number|add:"0" >= 80 %} + {% if meeting.has_recordings %} {% with session.recordings as recordings %} {% if recordings %} {# There's no guaranteed order, so this is a bit messy: #} @@ -229,7 +229,7 @@ {% endif %} {# Notes #} - {% if use_notes %} + {% if meeting.uses_notes %}
  • Notepad for note-takers @@ -303,7 +303,7 @@
  • {% else %} {# chat logs #} - {% if meeting.number|add:"0" >= 60 %} + {% if meeting.has_chat_logs %}
  • @@ -312,7 +312,7 @@
  • {% endif %} {# Recordings #} - {% if meeting.number|add:"0" >= 80 %} + {% if meeting.has_recordings %} {% with session.recordings as recordings %} {% if recordings %} {# There's no guaranteed order, so this is a bit messy: #} diff --git a/ietf/templates/meeting/session_details_panel.html b/ietf/templates/meeting/session_details_panel.html index 808da1438..52aeaaa8c 100644 --- a/ietf/templates/meeting/session_details_panel.html +++ b/ietf/templates/meeting/session_details_panel.html @@ -9,7 +9,7 @@ {% if meeting.type.slug == 'interim' %} {% include "meeting/interim_session_buttons.html" with show_agenda=False show_empty=False %} {% else %} - {% include "meeting/session_buttons_include.html" with show_agenda=False item=session.official_timeslotassignment use_notes=session.meeting.use_notes %} + {% include "meeting/session_buttons_include.html" with show_agenda=False item=session.official_timeslotassignment %} {% endif %} {% endif %} @@ -230,7 +230,7 @@ - {% if use_notes %} + {% if meeting.uses_notes %}
    @@ -310,7 +310,7 @@ - {% if use_notes %} + {% if session.uses_notes %} {% endif %} {# Recordings #} - {% if meeting.type.slug == 'interim' or meeting.number|add:"0" >= 80 %} + {% if session.has_recordings %} {% with session.recordings as recordings %} {% if recordings %} {# There's no guaranteed order, so this is a bit messy: #} diff --git a/ietf/templates/meeting/upcoming.html b/ietf/templates/meeting/upcoming.html index 802b1b03c..13a27ed91 100644 --- a/ietf/templates/meeting/upcoming.html +++ b/ietf/templates/meeting/upcoming.html @@ -89,7 +89,7 @@ Cancelled {% else %} - + {% endif %} {% endwith %} {% else %} diff --git a/playwright/helpers/meeting.js b/playwright/helpers/meeting.js index f07228b47..52bc331fd 100644 --- a/playwright/helpers/meeting.js +++ b/playwright/helpers/meeting.js @@ -630,7 +630,7 @@ module.exports = { }, categories, isCurrentMeeting: dateMode !== 'past', - useNotes: true, + usesNotes: true, schedule, floors }
    @@ -320,7 +320,7 @@
    {% include "meeting/interim_session_buttons.html" with show_agenda=True use_notes=meeting.uses_notes %}{% include "meeting/interim_session_buttons.html" with show_agenda=True %}