Skip to content

Commit f9ca030

Browse files
authored
fix: unexpected chatlog links (ietf-tools#8774)
* fix: unexpected chatlog links * fix: separate handling of polls and chatlogs
1 parent 2b7d4ad commit f9ca030

3 files changed

Lines changed: 51 additions & 6 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7736,6 +7736,44 @@ def test_add_session_recordings(self):
77367736
self.assertEqual(r.status_code, 404)
77377737
self.assertFalse(mock_delete.called)
77387738

7739+
def test_show_chatlog_links(self):
7740+
meeting = MeetingFactory(type_id='ietf', number='122')
7741+
session = SessionFactory(meeting=meeting)
7742+
doc_name = 'chatlog-72-mars-197001010000'
7743+
SessionPresentation.objects.create(session=session,document=DocumentFactory(type_id='chatlog', name=doc_name))
7744+
7745+
session_url = urlreverse('ietf.meeting.views.session_details',
7746+
kwargs={'num':meeting.number, 'acronym':session.group.acronym})
7747+
7748+
r = self.client.get(session_url)
7749+
7750+
self.assertEqual(r.status_code, 200)
7751+
7752+
q = PyQuery(r.content)
7753+
7754+
# Find the chatlog link in the desktop view
7755+
link_chatlog_box = q(f'a[title="Chat logs for {session.group.acronym}"]')
7756+
self.assertTrue(link_chatlog_box, 'Expected <a> element with title "Chat logs for {group.acronym}" not found.')
7757+
self.assertEqual(link_chatlog_box.attr('href'), '/doc/'+ doc_name)
7758+
7759+
# Find the chatlog link in the mobile view
7760+
link_chatlog_list = q('li:contains("Chat logs")')
7761+
self.assertTrue(link_chatlog_list, 'Expected <li> element containing "Chat logs" not found.')
7762+
self.assertEqual(link_chatlog_list.find('a').attr('href'), '/doc/'+ doc_name)
7763+
7764+
def test_hide_chatlog_links(self):
7765+
# mock meeting and session, but no chatlog document
7766+
meeting = MeetingFactory(type_id='ietf', number='122')
7767+
session = SessionFactory(meeting=meeting)
7768+
7769+
session_url = urlreverse('ietf.meeting.views.session_details',
7770+
kwargs={'num':meeting.number, 'acronym':session.group.acronym})
7771+
7772+
r = self.client.get(session_url)
7773+
7774+
self.assertEqual(r.status_code, 200)
7775+
# validate no links for chat logs exist
7776+
self.assertNotContains(r, 'Chat logs')
77397777

77407778

77417779
class HasMeetingsTests(TestCase):

ietf/meeting/views.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from urllib.parse import parse_qs, unquote, urlencode, urlsplit, urlunsplit, urlparse
2424
from tempfile import mkstemp
2525
from wsgiref.handlers import format_date_time
26+
from itertools import chain
2627

2728
from django import forms
2829
from django.core.cache import caches
@@ -2496,7 +2497,12 @@ def session_details(request, num, acronym):
24962497
session.filtered_artifacts.sort(key=lambda d:artifact_types.index(d.document.type.slug))
24972498
session.filtered_slides = session.presentations.filter(document__type__slug='slides').order_by('order')
24982499
session.filtered_drafts = session.presentations.filter(document__type__slug='draft')
2499-
session.filtered_chatlog_and_polls = session.presentations.filter(document__type__slug__in=('chatlog', 'polls')).order_by('document__type__slug')
2500+
2501+
filtered_polls = session.presentations.filter(document__type__slug=('polls'))
2502+
filtered_chatlogs = session.presentations.filter(document__type__slug=('chatlog'))
2503+
session.filtered_chatlog_and_polls = chain(filtered_chatlogs, filtered_polls)
2504+
session.chatlog = filtered_chatlogs.first()
2505+
25002506
# TODO FIXME Deleted materials shouldn't be in the presentations
25012507
for qs in [session.filtered_artifacts,session.filtered_slides,session.filtered_drafts]:
25022508
qs = [p for p in qs if p.document.get_state_slug(p.document.type_id)!='deleted']

ietf/templates/meeting/session_buttons_include.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
{% load origin %}
33
{% load static %}
44
{% load textfilters tz %}
5-
{% load ietf_filters %}
5+
{% load ietf_filters session_filters %}
6+
67
{% origin %}
78
{% if item and item|should_show_agenda_session_buttons %}
89
{% with slug=item.slug session=item.session timeslot=item.timeslot %}
@@ -126,10 +127,10 @@
126127
</a>
127128
{% else %}
128129
{# chat logs #}
129-
{% if meeting.has_chat_logs %}
130+
{% if meeting.has_chat_logs and session.chatlog %}
130131
<a class="btn btn-outline-primary"
131132
role="button"
132-
href="{{session.chat_archive_url}}"
133+
href="/doc/{{ session.chatlog.document.name }}"
133134
aria-label="Chat logs for {{ session.chat_room_name }}"
134135
title="Chat logs for {{ session.chat_room_name }}">
135136
<i class="bi bi-file-text"></i>
@@ -303,10 +304,10 @@
303304
</li>
304305
{% else %}
305306
{# chat logs #}
306-
{% if meeting.has_chat_logs %}
307+
{% if meeting.has_chat_logs and session.chatlog %}
307308
<li>
308309
<a class="dropdown-item"
309-
href="session.chat_room_url">
310+
href="/doc/{{ session.chatlog.document.name }}">
310311
<i class="bi bi-file-text"></i> Chat logs
311312
</a>
312313
</li>

0 commit comments

Comments
 (0)