Hopefully the final check-ins.

- Legacy-Id: 19909
This commit is contained in:
Lars Eggert 2022-02-08 17:29:15 +00:00
parent ed30521e14
commit bbf088e18b
495 changed files with 858 additions and 1304 deletions
docker/configs
ietf
doc
iesg
meeting
person/templatetags
static
templates
401.html403.html404.html500.html
admin/group/group
api
base.html
base
community
cookies
debug.html
doc

View file

@ -41,7 +41,7 @@ EMAIL_PORT=2025
TRAC_WIKI_DIR_PATTERN = "test/wiki/%s"
TRAC_SVN_DIR_PATTERN = "test/svn/%s"
MEDIA_BASE_DIR = 'test'
MEDIA_BASE_DIR = 'data/developers'
MEDIA_ROOT = MEDIA_BASE_DIR + '/media/'
MEDIA_URL = '/media/'
@ -59,4 +59,20 @@ SUBMIT_YANG_RFC_MODEL_DIR = 'data/developers/ietf-ftp/yang/rfcmod/'
# Set INTERNAL_IPS for use within Docker. See https://knasmueller.net/fix-djangos-debug-toolbar-not-showing-inside-docker
import socket
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
# DEV_TEMPLATE_CONTEXT_PROCESSORS = [
# 'ietf.context_processors.sql_debug',
# ]
DOCUMENT_PATH_PATTERN = 'data/developers/ietf-ftp/{doc.type_id}/'
INTERNET_DRAFT_PATH = 'data/developers/ietf-ftp/internet-drafts/'
CHARTER_PATH = 'data/developers/ietf-ftp/charter/'
BOFREQ_PATH = 'data/developers/ietf-ftp/bofreq/'
CONFLICT_REVIEW_PATH = 'data/developers/ietf-ftp/conflict-reviews/'
STATUS_CHANGE_PATH = 'data/developers/ietf-ftp/status-changes/'
INTERNET_DRAFT_ARCHIVE_DIR = 'data/developers/ietf-ftp/internet-drafts/'
INTERNET_ALL_DRAFTS_ARCHIVE_DIR = 'data/developers/ietf-ftp/internet-drafts/'
NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/'
SLIDE_STAGING_PATH = 'test/staging/'

View file

@ -17,15 +17,16 @@ from ietf.doc.models import Document, DocAlias
from ietf.doc.utils import uppercase_std_abbreviated_name
from ietf.utils.fields import SearchableField
def select2_id_doc_name(objs):
def select2_id_doc_name(model, objs):
return [{
"id": o.pk,
"url": o.get_absolute_url() if model == Document else o.document.get_absolute_url(),
"text": escape(uppercase_std_abbreviated_name(o.name)),
} for o in objs] if objs else []
def select2_id_doc_name_json(objs):
return json.dumps(select2_id_doc_name(objs))
def select2_id_doc_name_json(model, objs):
return json.dumps(select2_id_doc_name(model, objs))
class SearchableDocumentsField(SearchableField):
@ -55,7 +56,7 @@ class SearchableDocumentsField(SearchableField):
def make_select2_data(self, model_instances):
"""Get select2 data items"""
return select2_id_doc_name(model_instances)
return select2_id_doc_name(self.model, model_instances)
def ajax_url(self):
"""Get the URL for AJAX searches"""

View file

@ -226,13 +226,14 @@ def urlize_ietf_docs(string, autoescape=None):
"""
if autoescape and not isinstance(string, SafeData):
string = escape(string)
string = re.sub(r"(?<!>)(RFC\s*?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(BCP\s*?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(?<!>)(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(RFC\s*?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(BCP\s*?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(charter-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
return mark_safe(string)
urlize_ietf_docs = stringfilter(urlize_ietf_docs)
@ -240,9 +241,15 @@ urlize_ietf_docs = stringfilter(urlize_ietf_docs)
def urlize_related_source_list(related, autoescape=None):
"""Convert a list of DocumentRelations into list of links using the source document's canonical name"""
links = []
names = set()
titles = set()
for rel in related:
name=rel.source.canonical_name()
title = rel.source.title
if name in names and title in titles:
continue
names.add(name)
titles.add(title)
url = urlreverse('ietf.doc.views_doc.document_main', kwargs=dict(name=name))
if autoescape:
name = escape(name)
@ -409,7 +416,9 @@ def ad_area(user):
def format_history_text(text, trunc_words=25):
"""Run history text through some cleaning and add ellipsis if it's too long."""
full = mark_safe(text)
full = urlize_ietf_docs(full)
if "</a>" not in full:
full = urlize_ietf_docs(full)
full = bleach.linkify(full, parse_email=True)
return format_snippet(full, trunc_words)

View file

@ -2384,7 +2384,7 @@ class FieldTests(TestCase):
self.assertCountEqual(decoded_ids, [str(doc.id) for doc in docs])
for doc in docs:
self.assertEqual(
dict(id=doc.pk, selected=True, text=escape(uppercase_std_abbreviated_name(doc.name))),
dict(id=doc.pk, selected=True, url=doc.get_absolute_url(), text=escape(uppercase_std_abbreviated_name(doc.name))),
decoded[str(doc.pk)],
)

View file

@ -191,7 +191,8 @@ This test section has some text.
self.client.login(username=username,password=username+'+password')
r = self.client.get(url)
self.assertEqual(r.status_code,200)
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
# Yes, unescape is needed twice, for names like "O'Connor"
unescaped = unescape(unescape(unicontent(r).encode('utf-8').decode('unicode-escape')))
for editor in previous_editors:
self.assertIn(editor.name,unescaped)
new_editors = set(previous_editors)
@ -231,7 +232,8 @@ This test section has some text.
self.client.login(username=username,password=username+'+password')
r = self.client.get(url)
self.assertEqual(r.status_code,200)
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
# Yes, unescape is needed twice, for names like "O'Connor"
unescaped = unescape(unescape(unicontent(r).encode('utf-8').decode('unicode-escape')))
for responsible in previous_responsible:
self.assertIn(responsible.name, unescaped)
new_responsible = set(previous_responsible)

View file

@ -33,9 +33,9 @@ class EditAuthorsTests(IetfSeleniumTestCase):
person_span = form_elt.find_element(By.CLASS_NAME, 'select2-selection')
self.scroll_to_element(person_span)
person_span.click()
input = self.driver.find_element(By.CLASS_NAME, 'select2-search__field')
input = self.driver.find_element(By.CSS_SELECTOR, '.select2-search__field[aria-controls*=author]')
input.send_keys(name)
result_selector = 'ul.select2-results__options > li.select2-results__option--selectable'
result_selector = 'ul.select2-results__options[id*=author] > li.select2-results__option--selectable'
self.wait.until(
expected_conditions.text_to_be_present_in_element(
(By.CSS_SELECTOR, result_selector),
@ -94,9 +94,9 @@ class EditAuthorsTests(IetfSeleniumTestCase):
# get the "add author" button so we can add blank author forms
add_author_button = self.driver.find_element(By.ID, 'add-author-button')
for index, auth in enumerate(authors):
self.driver.execute_script("arguments[0].scrollIntoView();", add_author_button) # FIXME-LARS: no idea why this fails:
self.driver.execute_script("arguments[0].scrollIntoView();", add_author_button) # FIXME: no idea why this fails:
# self.scroll_to_element(add_author_button) # Can only click if it's in view!
self.driver.execute_script("arguments[0].click();", add_author_button) # FIXME-LARS: no idea why this fails:
self.driver.execute_script("arguments[0].click();", add_author_button) # FIXME: no idea why this fails:
# add_author_button.click() # Create a new form. Automatically scrolls to it.
author_forms = authors_list.find_elements(By.CLASS_NAME, 'author-panel')
authors_added = index + 1
@ -119,7 +119,7 @@ class EditAuthorsTests(IetfSeleniumTestCase):
self.driver.find_element(By.ID, 'id_basis').send_keys('change testing')
# Now click the 'submit' button and check that the update was accepted.
submit_button = self.driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
self.driver.execute_script("arguments[0].click();", submit_button) # FIXME-LARS: no idea why this fails:
self.driver.execute_script("arguments[0].click();", submit_button) # FIXME: no idea why this fails:
# self.scroll_to_element(submit_button)
# submit_button.click()
# Wait for redirect to the document_main view

View file

@ -583,4 +583,4 @@ def ajax_select2_search_docs(request, model_name, doc_type):
objs = qs.distinct().order_by("name")[:20]
return HttpResponse(select2_id_doc_name_json(objs), content_type='application/json')
return HttpResponse(select2_id_doc_name_json(model, objs), content_type='application/json')

View file

@ -26,8 +26,7 @@ def get_agenda_date(date=None):
return datetime.date.today()
else:
try:
# FIXME: .active()
return TelechatDate.objects.all().get(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()).date
return TelechatDate.objects.active().get(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()).date
except (ValueError, TelechatDate.DoesNotExist):
raise Http404
@ -221,5 +220,4 @@ def agenda_data(date=None):
fill_in_agenda_docs(date, sections)
fill_in_agenda_management_issues(date, sections)
return { 'date': date.isoformat(), 'sections': sections }
return { 'date': date.isoformat(), 'sections': sections }

View file

@ -266,7 +266,7 @@ class EditMeetingScheduleTests(IetfSeleniumTestCase):
# hide timeslots
modal_open = self.driver.find_element(By.CSS_SELECTOR, "#timeslot-toggle-modal-open")
self.driver.execute_script("arguments[0].click();", modal_open) # FIXME-LARS: not working:
self.driver.execute_script("arguments[0].click();", modal_open) # FIXME: not working:
# modal_open.click()
self.assertTrue(self.driver.find_element(By.CSS_SELECTOR, "#timeslot-group-toggles-modal").is_displayed())
@ -589,7 +589,7 @@ class EditMeetingScheduleTests(IetfSeleniumTestCase):
# option to swap. If we used the first or last day, a fencepost error in
# disabling options by date might be hidden.
clicked_index = 1
self.driver.execute_script("arguments[0].click();", future_swap_ts_buttons[clicked_index]) # FIXME-LARS: not working:
self.driver.execute_script("arguments[0].click();", future_swap_ts_buttons[clicked_index]) # FIXME: not working:
# future_swap_ts_buttons[clicked_index].click()
try:
modal = wait.until(
@ -1520,7 +1520,7 @@ class AgendaTests(IetfSeleniumTestCase):
),
'Modal open button not found or not clickable',
)
# FIXME-LARS: no idea why we need js instead of the following:
# FIXME: no idea why we need js instead of the following:
# self.scroll_to_element(open_modal_button)
# open_modal_button.click()
self.driver.execute_script("arguments[0].click();", open_modal_button)
@ -1761,7 +1761,7 @@ class AgendaTests(IetfSeleniumTestCase):
farfut_button = self.driver.find_element(By.CSS_SELECTOR, 'button[data-filter-item="farfut"]')
break_checkbox = self.driver.find_element(By.CSS_SELECTOR, 'input[type="checkbox"][name="selected-sessions"][data-filter-item="secretariat-sessb"]')
registration_checkbox = self.driver.find_element(By.CSS_SELECTOR, 'input[type="checkbox"][name="selected-sessions"][data-filter-item="secretariat-sessa"]')
self.driver.execute_script("arguments[0].click();", mars_sessa_checkbox) # select mars session; FIXME: no idea why a simple mars_sessa_checkbox.click() doesn't work
self.driver.execute_script("arguments[0].click();", mars_sessa_checkbox) # select mars session; FIXME: no idea why a simple mars_sessa_checkbox.click() doesn't work
try:
wait.until(

View file

@ -4280,8 +4280,8 @@ class InterimTests(TestCase):
self.assertContains(r, 'IETF-%02d'%int(ietf.meeting.number))
q = PyQuery(r.content)
#id="-%s" % interim.group.acronym
#self.assertIn('CANCELLED', q('[id*="'+id+'"]').text())
self.assertIn('CANCELLED', q('tr>td>a>span').text())
#self.assertIn('Cancelled', q('[id*="'+id+'"]').text())
self.assertIn('Cancelled', q('tr>td>a>span').text())
def do_upcoming_test(self, querystring=None, create_meeting=True):
if create_meeting:
@ -4304,7 +4304,7 @@ class InterimTests(TestCase):
self.assertContains(r, 'IETF 72')
# cancelled session
q = PyQuery(r.content)
self.assertIn('CANCELLED', q('tr>td.text-end>span').text())
self.assertIn('Cancelled', q('tr>td.text-end>span').text())
# test_upcoming_filters_ignored removed - we _don't_ want to ignore filters now, and the test passed because it wasn't testing the filtering anyhow (which requires testing the js).

View file

@ -4,55 +4,83 @@ import datetime
from django import template
import debug # pyflakes:ignore
import debug # pyflakes:ignore
from ietf.nomcom.utils import is_eligible
from ietf.nomcom.utils import is_eligible
from ietf.person.models import Alias
register = template.Library()
@register.filter
def is_nomcom_eligible(person, date=datetime.date.today()):
return is_eligible(person=person,date=date)
return is_eligible(person=person, date=date)
@register.filter
def person_by_name(name):
"Look up a person record from name"
if not isinstance(name, (type(b''), type(u''))):
if not isinstance(name, (type(b""), type(""))):
return None
alias = Alias.objects.filter(name=name).first()
return alias.person if alias else None
# CLEANUP: There are several hundred Person objects with no Alias object,
# violating the expectiations of the code. The check for the existance of an
# violating the expectations of the code. The check for the existence of an
# alias object below matching the person's name avoids presenting a link that
# we know will 404. When the database is corrected and we can expect that the
# Alias for the person's name to always be there, we can remove this extra
# database query (or leave it as a safeguard until it becomes a performance
# issue.)
@register.inclusion_tag('person/person_link.html')
@register.inclusion_tag("person/person_link.html")
def person_link(person, **kwargs):
title = kwargs.get('title', '')
cls = kwargs.get('class', '')
with_email = kwargs.get('with_email', True)
nowrap = kwargs.get('nowrap', True)
title = kwargs.get("title", "")
cls = kwargs.get("class", "")
with_email = kwargs.get("with_email", True)
nowrap = kwargs.get("nowrap", True)
if person:
name = person.name if person.alias_set.filter(name=person.name).exists() else ''
plain_name = person.plain_name()
name = (
person.name
if person.alias_set.filter(name=person.name).exists()
else plain_name
)
email = person.email_address()
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
return {
"name": name,
"plain_name": plain_name,
"email": email,
"title": title,
"class": cls,
"with_email": with_email,
"nowrap": nowrap,
}
else:
return {}
@register.inclusion_tag('person/person_link.html')
@register.inclusion_tag("person/person_link.html")
def email_person_link(email, **kwargs):
title = kwargs.get('title', '')
cls = kwargs.get('class', '')
with_email = kwargs.get('with_email', True)
nowrap = kwargs.get('nowrap', True)
name = email.person.name if email.person.alias_set.filter(name=email.person.name).exists() else ''
title = kwargs.get("title", "")
cls = kwargs.get("class", "")
with_email = kwargs.get("with_email", True)
nowrap = kwargs.get("nowrap", True)
plain_name = email.person.plain_name()
name = (
email.person.name
if email.person.alias_set.filter(name=email.person.name).exists()
else plain_name
)
email = email.address
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
return {
"name": name,
"plain_name": plain_name,
"email": email,
"title": title,
"class": cls,
"with_email": with_email,
"nowrap": nowrap,
}

View file

@ -143,12 +143,12 @@ pre {
}
#timeline .bar text {
fill: white;
fill: black;
dominant-baseline: central;
pointer-events: none;
}
$timeline-odd-color: $primary;
$timeline-odd-color: $info;
$timeline-odd-hover-color: shift-color($timeline-odd-color, $link-shade-percentage) !default;
#timeline .bar:nth-child(odd) rect {
@ -160,7 +160,7 @@ $timeline-odd-hover-color: shift-color($timeline-odd-color, $link-shade-percenta
fill: $timeline-odd-hover-color;
}
$timeline-even-color: $success;
$timeline-even-color: $warning;
$timeline-even-hover-color: shift-color($timeline-even-color, $link-shade-percentage) !default;
#timeline .bar:nth-child(even) rect {

View file

@ -75,7 +75,7 @@ $(document)
}
attachTo.find(".dropdown-menu")
.remove();
var menu = ['<ul class="dropdown-menu ms-n1">'];
var menu = ['<ul class="dropdown-menu ms-n1 mt-n1">'];
var groups = data[parentId];
var gtype = "";
for (var i = 0; i < groups.length; ++i) {

View file

@ -97,7 +97,11 @@ setInterval(animate, 50);
window.draw_calendar = function () {
window.setTimeout(draw_calendar, 1000);
var width = document.body.clientWidth;
var width = $('#mtgheader')
.width();
var offset = $('#mtgheader')
.offset()
.left;
var height = document.body.clientHeight;
if (lastheight == height &&
@ -116,7 +120,7 @@ window.draw_calendar = function () {
{
var start_time = parseInt(items[i].time.substr(0, 2), 10) * 60 +
parseInt(items[i].time.substr(2, 2), 10);
var end_time = start_time + (items[i].duration / 60)
var end_time = start_time + (items[i].duration / 60);
if (start_time < day_start) { day_start = start_time; }
if (end_time > day_end) { day_end = end_time; }
@ -128,8 +132,6 @@ window.draw_calendar = function () {
var header_offset = $('#daytabs')
.outerHeight(true) + $('#mtgheader')
.outerHeight(true);
console.log($('#mtgheader')
.outerHeight(true));
var num_minutes = day_end - day_start;
var minute_height = (height - header_height - header_offset) / num_minutes;
@ -146,7 +148,7 @@ window.draw_calendar = function () {
var e = document.createElement("div");
e.style.border = "solid";
e.style.borderWidth = border;
e.style.borderWidth = border + "px";
e.style.background = "#2647f0";
e.style.color = "#fff";
@ -157,15 +159,15 @@ window.draw_calendar = function () {
e.style.overflow = "hidden";
e.style.position = "absolute";
e.style.top = header_offset;
e.style.left = timelabel_width + ri * room_width;
e.style.width = room_width;
e.style.height = header_height;
e.style.top = header_offset + "px";
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
e.style.width = room_width + "px";
e.style.height = header_height + "px";
e.style.margin = 0;
e.style.padding = padding;
e.style.margin = 0 + "px";
e.style.padding = padding + "px";
e.style.fontFamily = "sans-serif";
e.style.fontSize = header_height * 0.25;
e.style.fontSize = (header_height * 0.25) + "px";
e.style.textAlign = "center";
@ -188,7 +190,7 @@ window.draw_calendar = function () {
e = document.createElement("div");
e.style.border = "solid";
e.style.borderWidth = border;
e.style.borderWidth = border + "px";
e.style.color = "#000";
e.style.borderColor = "#fff #000";
@ -197,13 +199,13 @@ window.draw_calendar = function () {
e.style.overflow = "hidden";
e.style.position = "absolute";
e.style.top = header_height + header_offset;
e.style.left = timelabel_width + ri * room_width;
e.style.width = room_width;
e.style.height = height - header_height - header_offset;
e.style.top = (header_height + header_offset) + "px";
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
e.style.width = room_width + "px";
e.style.height = (height - header_height - header_offset) + "px";
e.style.margin = 0;
e.style.padding = padding;
e.style.margin = 0 + "px";
e.style.padding = padding + "px";
document.getElementById("day" + day)
.appendChild(e);
@ -220,28 +222,28 @@ window.draw_calendar = function () {
e.style.borderColor = "#f8f8f8";
e.style.overflow = "hidden";
e.style.position = "absolute";
e.style.top = header_height + header_offset + (time - day_start) * minute_height;
e.style.left = timelabel_width;
e.style.width = width - timelabel_width;
e.style.height = 0;
e.style.top = (header_height + header_offset + (time - day_start) * minute_height) + "px";
e.style.left = (offset + timelabel_width) + "px";
e.style.width = (width - timelabel_width) + "px";
e.style.height = 0 + "px";
e.style.zIndex = "-1";
e.style.margin = 0;
e.style.padding = padding;
e.style.margin = 0 + "px";
e.style.padding = padding + "px";
document.getElementById("day" + day)
.appendChild(e);
e = document.createElement("div");
e.style.overflow = "hidden";
e.style.position = "absolute";
e.style.top = header_height + header_offset - (header_height * 0.125) + (time - day_start) * minute_height;
e.style.left = 0;
e.style.width = timelabel_width;
e.style.height = header_height * 0.5;
e.style.top = (header_height + header_offset - (header_height * 0.125) + (time - day_start) * minute_height) + "px";
e.style.left = offset + "px";
e.style.width = timelabel_width + "px";
e.style.height = (header_height * 0.5) + "px";
e.style.zIndex = "-1";
e.style.margin = 0;
e.style.margin = 0 + "px";
e.style.padding = padding;
e.style.fontFamily = "sans-serif";
e.style.fontSize = header_height * 0.25;
e.style.fontSize = (header_height * 0.25) + "px";
e.style.textAlign = "right";
e.style.color = "#e0e0e0";
var label = time / 60 + "00";
@ -270,13 +272,13 @@ window.draw_calendar = function () {
var sess_width = room_width / items[i].lanes;
var sess_height = ((end_time - start_time) * minute_height);
var room_left = timelabel_width + items[i].room_index * room_width;
var room_left = offset + timelabel_width + items[i].room_index * room_width;
var sess_left = room_left + sess_width * items[i].lane;
var sess_top = ((start_time - day_start) * minute_height) + header_height + header_offset;
e = document.createElement("div");
e.style.border = "solid";
e.style.borderWidth = border;
e.style.borderWidth = border + "px";
if (fg[items[i].area]) {
e.style.background = bg[items[i].area];
@ -291,12 +293,12 @@ window.draw_calendar = function () {
e.style.display = "block";
e.style.overflow = "hidden";
e.style.position = "absolute";
e.style.top = sess_top;
e.style.left = sess_left;
e.style.width = sess_width;
e.style.height = sess_height;
e.style.margin = 0;
e.style.padding = padding;
e.style.top = sess_top + "px";
e.style.left = sess_left + "px";
e.style.width = sess_width + "px";
e.style.height = sess_height + "px";
e.style.margin = 0 + "px";
e.style.padding = padding + "px";
e.style.fontFamily = "sans-serif";
e.style.fontSize = "8pt";
if (items[i].from_base_schedule)
@ -357,20 +359,23 @@ function resize(div, t2, l2, w2, h2, to_fit) {
}
function animate() {
var offset = $('#mtgheader')
.offset()
.left;
var i;
for (i = divlist.length - 1; i >= 0; i--) {
var div = divlist[i];
if (div.percent < 100) {
div.percent += 5;
var t1 = parseFloat(div.style.top.replace("px", ""));
var l1 = parseFloat(div.style.left.replace("px", ""));
var w1 = parseFloat(div.style.width.replace("px", ""));
var h1 = parseFloat(div.style.height.replace("px", ""));
var t1 = parseFloat(div.style.top.replace("px", "")) + "px";
var l1 = offset + parseFloat(div.style.left.replace("px", "")) + "px";
var w1 = parseFloat(div.style.width.replace("px", "")) + "px";
var h1 = parseFloat(div.style.height.replace("px", "")) + "px";
div.style.top = wavg(t1, div.t2, div.percent);
div.style.left = wavg(l1, div.l2, div.percent);
div.style.width = wavg(w1, div.w2, div.percent);
div.style.height = wavg(h1, div.h2, div.percent);
div.style.top = wavg(t1, div.t2, div.percent) + "px" + "px";
div.style.left = offset + wavg(l1, div.l2, div.percent) + "px" + "px";
div.style.width = wavg(w1, div.w2, div.percent) + "px" + "px";
div.style.height = wavg(h1, div.h2, div.percent) + "px" + "px";
if (t1 == div.t2 && l1 == div.l2 &&
w1 == div.w2 && h1 == div.h2) { div.percent = 100; }
@ -390,7 +395,7 @@ function animate() {
tmp();
}
}
div.style.height = tmp;
div.style.height = tmp + "px";
} else {
divlist.remove(i);
if (div.callback) {
@ -410,14 +415,17 @@ function finish_maximize(e) {
}
e.insertBefore(document.createElement("br"), e.firstChild);
var offset = $('#mtgheader')
.offset()
.left;
var minimize_func = function (e) { return function () { minimize(e); }; };
var img = document.createElement("img");
img.src = "{% static 'ietf/images/agenda-weekview/close.png' %}";
img.style.cssFloat = "right";
img.onclick = minimize_func(e);
img.style.cursor = "pointer";
e.insertBefore(img, e.firstChild);
var i = document.createElement("i");
i.classList.add('bi', 'bi-x-lg');
i.style.cssFloat = "right";
i.onclick = minimize_func(e);
i.style.cursor = "pointer";
e.insertBefore(i, e.firstChild);
var h = document.createElement("span");
h.appendChild(document.createTextNode(items[e.id].dayname));
@ -428,24 +436,24 @@ function finish_maximize(e) {
var tmp = e.style.height;
e.style.removeProperty("height");
var used_height = e.clientHeight;
e.style.height = tmp;
e.style.height = tmp + "px";
var frame = document.createElement("iframe");
frame.setAttribute("src", items[e.id].agenda);
frame.style.position = "absolute";
frame.style.left = 8;
frame.style.width = e.clientWidth - 16;
frame.style.top = used_height + 8;
frame.style.height = e.clientHeight - used_height - 16;
frame.style.left = (offset + 8) + "px";
frame.style.width = (e.clientWidth - 16) + "px";
frame.style.top = (used_height + 8) + "px";
frame.style.height = (e.clientHeight - used_height - 16) + "px";
frame.style.background = "#fff";
frame.style.overflow = "auto";
frame.id = "agenda";
frame.style.border = e.style.border;
frame.style.borderWidth = border;
frame.style.padding = padding;
frame.style.borderWidth = border + "px";
frame.style.padding = padding + "px";
frame.style.borderColor = e.style.borderColor;
e.appendChild(frame);

View file

@ -4,7 +4,7 @@ import select2 from "select2";
select2($);
$.fn.select2.defaults.set("allowClear", true);
$.fn.select2.defaults.set("debug", false); // FIXME-LARS: initialize from settings.DEBUG somehow?
$.fn.select2.defaults.set("debug", false);
$.fn.select2.defaults.set("dropdownCssClass", ":all:");
$.fn.select2.defaults.set("minimumInputLength", 2);
$.fn.select2.defaults.set("selectionCssClass", ":all:");
@ -47,13 +47,12 @@ window.setupSelect2Field = function (e) {
}
} : undefined
});
console.log(e);
};
$(document)
.ready(function () {
$(".select2-field")
.not(".select2-hidden-accessible")
.each(function () {
if ($(this)
.closest(".template")

View file

@ -387,12 +387,12 @@ function finish_maximize(e) {
e.insertBefore(document.createElement("br"), e.firstChild);
var img = document.createElement("img");
img.src = "{% static 'ietf/images/agenda-weekview/close.png' %}";
img.style.cssFloat = "right";
img.onclick = function () { minimize(e); };
img.style.cursor = "pointer";
e.insertBefore(img, e.firstChild);
var i = document.createElement("i");
i.classList.add('bi', 'bi-x-lg');
i.style.cssFloat = "right";
i.onclick = function () { minimize(e); };
i.style.cursor = "pointer";
e.insertBefore(i, e.firstChild);
var h = document.createElement("span");
h.appendChild(document.createTextNode(e.item.dayname));

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2012, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "admin/change_form.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "admin/change_list.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "admin/base_site.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% block title %}OpenID Connect Issuer{% endblock %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015-2021, All Rights Reserved #}
<!doctype html>
{% load ietf_filters static %}
@ -17,6 +16,7 @@
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
{% endcomment %}
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
<style>
{% block morecss %}{% endblock %}
.leftmenu { width: 13em; }
@ -56,15 +56,13 @@
in
</a>
{% endif %}
<form class="navbar-form d-flex d-none d-lg-block" action="/doc/search/">
<input class="form-control"
<div class="d-flex d-none d-lg-block">
<input class="form-control select2-field"
id="navbar-doc-search"
data-ajax--url="{% url 'ietf.doc.views_search.ajax_select2_search_docs' model_name='document' doc_type='draft' %}"
type="text"
name="name"
placeholder="Document search"
required>
<input type="hidden" name="activedrafts" value="on">
<input type="hidden" name="rfcs" value="on">
</form>
data-placeholder="Document search">
</div>
<button class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
@ -138,6 +136,13 @@
</footer>
{% endblock %}
</div>
{% block js %}{% endblock %}
{% block js %}
{% endblock %}
<script src="{% static 'ietf/js/select2.js' %}"></script>
<script>
$('#navbar-doc-search').on('select2:select', function (e) {
window.location.href = e.params.data.url;
});
</script>
</body>
</html>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
<div class="text-end">
<label id="list-feeds">Atom feed:</label>
<div class="btn-group" role="group" aria-labelledby="list-feeds">

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021 All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021, All Rights Reserved #}
{% load origin django_bootstrap5 static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021, All Rights Reserved #}
{% load origin django_bootstrap5 static %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2021, All Rights Reserved #}
{% load origin %}
@ -55,7 +54,7 @@
</td>
<td>
{% if doc.get_state %}
<span title="{{ doc.get_state.desc }}">{{ doc.get_state.name }}</span>
<span title="{{ doc.get_state.desc }}" class="{% if doc.get_state.name|slugify == 'approved' %}text-success{% elif doc.get_state.name|slugify == 'declined' %}text-danger{% endif %}">{{ doc.get_state.name }}</span>
{% else %}
No document state
{% endif %}
@ -136,7 +135,7 @@
{% endif %}
</td>
<td>
{{ doc.notify|default:"(None)" }}
{{ doc.notify|default:'<span class="text-muted">(None)</span>' }}
</td>
</tr>
</tbody>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -91,7 +90,7 @@
</td>
<td>
{% if doc.get_state %}
<span title="{{ doc.get_state.desc }}">{{ doc.get_state.name }}</span>
<span title="{{ doc.get_state.desc }}" class="{% if doc.get_state.name|slugify == 'approved' %}text-success{% endif %}">{{ doc.get_state.name }}</span>
{% else %}
No document state
{% endif %}
@ -105,7 +104,11 @@
<th>{{ group.type.name }}</th>
<th>State</th>
<td class="edit"></td>
<td>{{ group.state.name }}</td>
<td>
<span class="{% if group.state.name|slugify == 'active' %}text-success{% endif %}">
{{ group.state.name }}
</span>
</td>
</tr>
</tbody>
<tbody class="meta border-top">
@ -149,7 +152,7 @@
</td>
<td>
{% if not telechat %}
(None)
<span class="text-muted">(None)</span>
{% else %}
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
{% endif %}
@ -172,7 +175,7 @@
{% endif %}
</td>
<td>
{{ doc.notify|default:"(None)" }}
{{ doc.notify|default:"<span class='text-muted'>(None)</span>" }}
</td>
</tr>
</tbody>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -90,7 +89,7 @@
</td>
<td>
{% if not telechat %}
(None)
<span class="text-muted">(None)</span>
{% else %}
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
{% if doc.returning_item %}(returning item){% endif %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016-2020, All Rights Reserved #}
{% load origin %}
@ -44,21 +43,23 @@
<td class="edit"></td>
<td>
{% if doc.get_state_slug == "rfc" and not snapshot %}
RFC - {{ doc.std_level }}
(
<span class="text-success">RFC - {{ doc.std_level }}</span>
{% if published %}
{{ published.time|date:"F Y" }}
({{ published.time|date:"F Y" }})
{% else %}
publication date unknown
(Publication date unknown)
{% endif %}
{% if has_errata %}
;
<a href="https://www.rfc-editor.org/errata_search.php?rfc={{ rfc_number }}"
rel="nofollow">Errata</a>
{% else %}
; No errata
{% if has_verified_errata %}
<a class="badge bg-danger text-decoration-none"
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}" title="Click to view errata." rel="nofollow">
Errata
</a>
{% elif has_errata %}
<a class="badge bg-warning text-decoration-none"
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}" title="Click to view errata." rel="nofollow">
Errata
</a>
{% endif %}
)
{% if obsoleted_by %}<div>Obsoleted by {{ obsoleted_by|urlize_related_source_list|join:", " }}</div>{% endif %}
{% if updated_by %}<div>Updated by {{ updated_by|urlize_related_source_list|join:", " }}</div>{% endif %}
{% if obsoletes %}<div>Obsoletes {{ obsoletes|urlize_related_target_list|join:", " }}</div>{% endif %}
@ -78,7 +79,7 @@
</div>
{% endif %}
{% else %}
{{ doc.get_state }} Internet-Draft
<span class="{% if doc.get_state_slug == 'active' %}text-success{% elif doc.get_state_slug == 'expired' %}text-danger{% endif %}">{{ doc.get_state }} Internet-Draft</span>
{% if submission %}({{ submission|safe }}){% endif %}
{% if resurrected_by %}- resurrect requested by {{ resurrected_by }}{% endif %}
{% endif %}
@ -107,7 +108,7 @@
<td>
{{ doc.time|date:"Y-m-d" }}
{% if latest_revision and latest_revision.time.date != doc.time.date %}
(latest revision {{ latest_revision.time|date:"Y-m-d" }})
<span class="text-muted">(Latest revision {{ latest_revision.time|date:"Y-m-d" }})</span>
{% endif %}
</td>
</tr>
@ -197,7 +198,7 @@
</a>
{% endif %}
</td>
<td {% if stream_desc == "(None)" %}class="text-muted"{%endif%} >
<td {% if stream_desc == "(None)" %}class="text-muted"{%endif%}>
{{ stream_desc }}
</td>
</tr>
@ -238,13 +239,13 @@
<td>
{% if doc.get_state_slug != "active" and doc.get_state_slug != "rfc" %}
<div class="float-end badge bg-warning">
Expired & archived
Expired &amp; archived
</div>
{% endif %}
{% if file_urls %}
{% for label, url in file_urls %}
<a class="btn btn-primary btn-sm" href="{{ url }}">
<i class="bi bi-file-{% if label == "pdf" %}pdf{% elif label == "xml" or label == "htmlized" %}code{% elif label == "bibtex" %}ruled{% elif label == "plain text" %}text{% endif %}">
<i class="bi bi-file-{% if label == 'pdf' %}pdf{% elif label == 'xml' or label == 'htmlized' or label == 'html' %}code{% elif label == 'bibtex' %}ruled{% elif label == 'plain text' %}text{% endif %}">
</i>
{{ label }}
</a>
@ -427,7 +428,9 @@
</td>
<td>
{% if stream_state %}
{{ stream_state }}
<span class="{% if stream_state|slugify|slice:"6" == 'active' %}text-success{% endif %}">
{{ stream_state }}
</span>
{% else %}
<span class="text-muted">
(None)
@ -453,8 +456,9 @@
{% endfor %}
</div>
{% endif %}
{# PEY: Move this to the IRSG section when built #}
{% if due_date %}[Due date: {{ due_date }}]{% endif %}
{% if due_date %}
<span class="text-muted">(Due date {{ due_date }})</span>
{% endif %}
</td>
{% else %}
<th>
@ -463,7 +467,7 @@
<td class="edit">
</td>
<td>
(No stream defined)
<span class="text-muted">(No stream defined)</span>
</td>
{% endif %}
</tr>
@ -575,7 +579,7 @@
href="{% url 'ietf.doc.views_doc.document_shepherd_writeup' name=doc.name %}">
Show
</a>
<small class="text-muted">(last changed {{ shepherd_writeup.time|date:"Y-m-d" }})</small>
<span class="text-muted">(Last changed {{ shepherd_writeup.time|date:"Y-m-d" }})</span>
{% else %}
<span class="text-muted">
(None)
@ -640,7 +644,13 @@
{% endif %}
</td>
<td>
{{ iesg_state_summary|default:"I-D Exists" }}
<span class="{% if iesg_state_summary|slugify == 'expired' %}text-danger{% endif %}">
{% if iesg_state_summary|striptags == iesg_state_summary %}
{{ iesg_state_summary|default:"I-D Exists"|urlize_ietf_docs }}
{% else %}
{{ iesg_state_summary|default:"I-D Exists" }}
{% endif %}
</span>
</td>
</tr>
{% if doc.action_holders_enabled %}

View file

@ -1,8 +1,7 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load ietf_filters %}
{% load ietf_filters textfilters %}
{% load static %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
@ -50,8 +49,8 @@
<a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
title="{{ desc }}">{{ trigger }}</a>
</td>
<td>{{ to|join:', ' }}</td>
<td>{{ cc|join:', ' }}</td>
<td>{{ to|join:', '|linkify }}</td>
<td>{{ cc|join:', '|linkify }}</td>
</tr>
{% endfor %}
</tbody>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -126,7 +125,7 @@
</td>
<td class="text-end">{{ e.rev }}</td>
<td>{{ e.by|escape }}</td>
<td>{{ e.desc|format_history_text|safe }}</td>
<td>{{ e.desc|format_history_text }}</td>
</tr>
{% endfor %}
</tbody>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "doc/htmlized_base.html" %}
{# Copyright The IETF Trust 2016, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -95,7 +94,7 @@
{% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
{% else %}
None
<span class="text-muted">(None)</span>
{% endif %}
</td>
</tr>

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin static ietf_filters %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin static ietf_filters %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016-2019, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -90,7 +89,7 @@
</td>
<td>
{% if not telechat %}
(None)
<span class="text-muted">(None)</span>
{% else %}
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
{% if doc.returning_item %}(returning item){% endif %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2017, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2017, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

View file

@ -1,4 +1,3 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}

Some files were not shown because too many files have changed in this diff Show more