From 1654f9319e3d2e68ad564bcd52119312713066e9 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 1 Jul 2020 14:17:01 +0000 Subject: [PATCH] Reworked the support for remote access urls in the agenda_note and remote_instructions fields of Session objects so as to accept any of a list of conference service domains as remote call-in URLs -- not only webex. - Legacy-Id: 18119 --- ietf/settings.py | 1 + ietf/templates/meeting/agenda.html | 2 +- ietf/templates/meeting/interim_session_buttons.html | 10 +++++----- ietf/templates/meeting/session_buttons_include.html | 11 ++++++++--- ietf/templates/meeting/session_details_panel.html | 8 ++++---- ietf/utils/templatetags/textfilters.py | 10 ++++++++++ 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index 349e809df..d7f1e7177 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1122,6 +1122,7 @@ if DEBUG: STATS_NAMES_LIMIT = 25 +UTILS_MEETING_CONFERENCE_DOMAINS = ['webex.com', 'zoom.us', 'jitsi.org', 'meetecho.com', ] UTILS_TEST_RANDOM_STATE_FILE = '.factoryboy_random_state' UTILS_APIKEY_GUI_LOGIN_LIMIT_DAYS = 30 diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index dd84b34e6..f4a60fe50 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -324,7 +324,7 @@ CANCELLED {% endif %} - {% if item.session.agenda_note|first_url %} + {% if item.session.agenda_note|first_url|conference_url %}
{{item.session.agenda_note|slice:":23"}} {% elif item.session.agenda_note %}
{{item.session.agenda_note}} diff --git a/ietf/templates/meeting/interim_session_buttons.html b/ietf/templates/meeting/interim_session_buttons.html index 33277a0be..df1371144 100644 --- a/ietf/templates/meeting/interim_session_buttons.html +++ b/ietf/templates/meeting/interim_session_buttons.html @@ -32,13 +32,13 @@ {% if now < item.timeslot.end_time %} - - {% if "webex.com/" in session.agenda_note|first_url %} + + {% if session.agenda_note|first_url|conference_url %} + title="Session call-in"> - {% elif session.remote_instructions|first_url %} + {% elif session.remote_instructions|first_url|conference_url %} @@ -57,7 +57,7 @@ {% else %} + title="No remote call-in info found in remote instructions or agenda note"> {% endif %} {% else %} diff --git a/ietf/templates/meeting/session_buttons_include.html b/ietf/templates/meeting/session_buttons_include.html index fc6ba4291..ea3ecc0bc 100644 --- a/ietf/templates/meeting/session_buttons_include.html +++ b/ietf/templates/meeting/session_buttons_include.html @@ -50,11 +50,16 @@ title="Audio stream"> {% endif %} - - {% if "webex.com/" in session.agenda_note|first_url %} + + {% if session.agenda_note|first_url|conference_url %} + title="Session call-in"> + + {% elif session.remote_instructions|first_url|conference_url %} + {% elif item.timeslot.location.webex_url %} Remote instructions: - {% if "https://ietf.webex.com" in session.agenda_note|first_url %} + {% if session.agenda_note|first_url|conference_url %} + title="Session call-in"> - {% elif "https://ietf.webex.com" in session.remote_instructions|first_url %} + {% elif session.remote_instructions|first_url|conference_url %} + title="Session call-in"> {% endif %} {{ session.remote_instructions }} diff --git a/ietf/utils/templatetags/textfilters.py b/ietf/utils/templatetags/textfilters.py index 980915330..fed4144c7 100644 --- a/ietf/utils/templatetags/textfilters.py +++ b/ietf/utils/templatetags/textfilters.py @@ -6,6 +6,7 @@ import re import bleach from django import template +from django.conf import settings from django.template.defaultfilters import stringfilter from django.utils.html import escape from django.utils.safestring import mark_safe @@ -84,3 +85,12 @@ def first_url(value): urls = re.findall(r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+", value) url = urls[0] if urls else None return url + +@register.filter +@stringfilter +def conference_url(value): + conf_re = r"http[s]?://\S*(%s)/" % ('|'.join(settings.UTILS_MEETING_CONFERENCE_DOMAINS), ) + return value if re.match(conf_re, value) else None + + + \ No newline at end of file