More fixes.
- Legacy-Id: 19855
This commit is contained in:
parent
edf3242665
commit
0bfaa63722
|
@ -226,10 +226,10 @@ def urlize_ietf_docs(string, autoescape=None):
|
|||
"""
|
||||
if autoescape and not isinstance(string, SafeData):
|
||||
string = escape(string)
|
||||
string = re.sub(r"(?<!>)(RFC ?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(BCP ?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(STD ?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(FYI ?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(RFC\s*?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(BCP\s*?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string)
|
||||
string = re.sub(r"(?<!>)(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string)
|
||||
string = re.sub(r"(?<!>)(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string)
|
||||
string = re.sub(r"(?<!>)(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string)
|
||||
|
@ -424,7 +424,7 @@ def format_snippet(text, trunc_words=25):
|
|||
snippet = truncatewords_html(full, trunc_words)
|
||||
if snippet != full:
|
||||
return mark_safe('<div class="snippet">%s<button class="btn btn-sm btn-primary show-all"><i class="bi bi-caret-down"></i></button></div><div class="visually-hidden full">%s</div>' % (snippet, full))
|
||||
return full
|
||||
return mark_safe(full)
|
||||
|
||||
@register.simple_tag
|
||||
def doc_edit_button(url_name, *args, **kwargs):
|
||||
|
|
|
@ -44,6 +44,7 @@ class EditAuthorsTests(IetfSeleniumTestCase):
|
|||
name
|
||||
))
|
||||
except:
|
||||
# print(self.driver.execute_script("return document.documentElement.outerHTML"))
|
||||
print(name, email, self.driver.find_element(By.CSS_SELECTOR, ".select2-results__message").text)
|
||||
# FIXME-LARS: force the test to succeed anyway, so CI doesn't crap out
|
||||
return
|
||||
|
|
|
@ -283,10 +283,10 @@ class ManageReviewRequestForm(forms.Form):
|
|||
|
||||
action = forms.ChoiceField(choices=ACTIONS, widget=forms.HiddenInput, required=False)
|
||||
close = forms.ModelChoiceField(queryset=close_review_request_states(), required=False)
|
||||
close_comment = forms.CharField(max_length=255, required=False)
|
||||
reviewer = PersonEmailChoiceField(empty_label="(None)", required=False, label_with="person")
|
||||
review_type = forms.ModelChoiceField(queryset=ReviewTypeName.objects.filter(slug__in=['telechat', 'lc']), required=True)
|
||||
add_skip = forms.BooleanField(required=False)
|
||||
close_comment = forms.CharField(max_length=255, required=False, label="Closing comment")
|
||||
reviewer = PersonEmailChoiceField(empty_label="(None)", required=False, label_with="person", label="Assign reviewer")
|
||||
review_type = forms.ModelChoiceField(queryset=ReviewTypeName.objects.filter(slug__in=['telechat', 'lc']), required=True, label="Review type")
|
||||
add_skip = forms.BooleanField(required=False, label="Skip next time")
|
||||
|
||||
def __init__(self, review_req, *args, **kwargs):
|
||||
if not "prefix" in kwargs:
|
||||
|
@ -309,10 +309,7 @@ class ManageReviewRequestForm(forms.Form):
|
|||
if close_initial:
|
||||
self.fields["close"].initial = close_initial
|
||||
|
||||
self.fields["close"].widget.attrs["class"] = "form-control input-sm"
|
||||
|
||||
get_reviewer_queue_policy(review_req.team).setup_reviewer_field(self.fields["reviewer"], review_req)
|
||||
self.fields["reviewer"].widget.attrs["class"] = "form-control input-sm"
|
||||
|
||||
if not getattr(review_req, 'in_lc_and_telechat', False):
|
||||
del self.fields["review_type"]
|
||||
|
@ -390,6 +387,4 @@ class ReviewSecretarySettingsForm(forms.ModelForm):
|
|||
class Meta:
|
||||
model = ReviewSecretarySettings
|
||||
fields = ['remind_days_before_deadline', 'max_items_to_show_in_reviewer_list',
|
||||
'days_to_show_in_reviewer_list']
|
||||
|
||||
|
||||
'days_to_show_in_reviewer_list']
|
|
@ -421,7 +421,7 @@ class GroupPagesTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
chairs = Role.objects.filter(group__type='wg', group__state='active', name_id='chair')
|
||||
self.assertEqual(len(q('div.photo-thumbnail img')), chairs.count())
|
||||
self.assertEqual(len(q('.photo')), chairs.count())
|
||||
|
||||
def test_wg_photos(self):
|
||||
GroupFactory(acronym='mars')
|
||||
|
@ -432,7 +432,7 @@ class GroupPagesTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
roles = Role.objects.filter(group__acronym='mars')
|
||||
self.assertEqual(len(q('div.photo-thumbnail img')), roles.count())
|
||||
self.assertEqual(len(q('.photo')), roles.count())
|
||||
|
||||
def test_group_photos(self):
|
||||
url = urlreverse("ietf.group.views.group_photos", kwargs={'acronym':'iab'})
|
||||
|
@ -440,7 +440,7 @@ class GroupPagesTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
roles = Role.objects.filter(group__acronym='iab')
|
||||
self.assertEqual(len(q('div.photo-thumbnail img')), roles.count())
|
||||
self.assertEqual(len(q('.photo')), roles.count())
|
||||
|
||||
def test_nonactive_group_badges(self):
|
||||
concluded_group = GroupFactory(state_id='conclude')
|
||||
|
|
|
@ -93,7 +93,7 @@ class IESGTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
ads = Role.objects.filter(group__type='area', group__state='active', name_id='ad')
|
||||
self.assertEqual(len(q('div.photo-thumbnail')), ads.count())
|
||||
self.assertEqual(len(q('.photo')), ads.count())
|
||||
|
||||
class IESGAgendaTests(TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -35,11 +35,13 @@ def person_by_name(name):
|
|||
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)
|
||||
if person:
|
||||
name = person.name if person.alias_set.filter(name=person.name).exists() else ''
|
||||
plain_name = person.plain_name()
|
||||
email = person.email_address()
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls}
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
|
||||
else:
|
||||
return {}
|
||||
|
||||
|
@ -48,7 +50,9 @@ def person_link(person, **kwargs):
|
|||
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 ''
|
||||
plain_name = email.person.plain_name()
|
||||
email = email.address
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls}
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
|
|
@ -6,7 +6,7 @@ $enable-negative-margins: true;
|
|||
// Don't add carets to dropdowns by default.
|
||||
// $enable-caret: false;
|
||||
|
||||
$tooltip-max-width: 100%;
|
||||
// $tooltip-max-width: 100%;
|
||||
|
||||
// Only import what we need:
|
||||
// https://getbootstrap.com/docs/5.1/customize/optimize/
|
||||
|
|
|
@ -108,7 +108,8 @@ $(document)
|
|||
$(document)
|
||||
.ready(function () {
|
||||
var headings = $("#content")
|
||||
.find("h1:visible, h2:visible, h3:visible, h4:visible, h5:visible, h6:visible");
|
||||
.find("h1:visible, h2:visible, h3:visible, h4:visible, h5:visible, h6:visible")
|
||||
.not(".navskip");
|
||||
|
||||
var contents = $(headings)
|
||||
.html()
|
||||
|
@ -132,12 +133,12 @@ $(document)
|
|||
.attr("tabindex", 0)
|
||||
.after($(`
|
||||
<div class="col-xl-2 small">
|
||||
<nav id="righthand-nav" class="position-fixed navbar navbar-light bg-light overflow-auto" style="height: 70vh;">
|
||||
<!--<a class="navbar-brand" href="#">Navbar</a>-->
|
||||
<nav id="righthand-nav" class="position-fixed navbar navbar-light bg-light overflow-auto flex-fill" style="height: 70vh; width: inherit;">
|
||||
</nav>
|
||||
</div>
|
||||
`))
|
||||
.find("h1:visible, h2:visible, h3:visible, h4:visible, h5:visible, h6:visible")
|
||||
.not(".navskip")
|
||||
.each(function () {
|
||||
// Some headings have complex HTML in them - only use first part in that case.
|
||||
var text = $(this)
|
||||
|
@ -162,7 +163,7 @@ $(document)
|
|||
if (nav === undefined) {
|
||||
nav = $("#righthand-nav");
|
||||
nav = $(nav)
|
||||
.append(`<nav class="nav nav-pills flex-column align-self-start">`)
|
||||
.append(`<nav class="nav nav-pills flex-column align-self-start flex-fill px-2">`)
|
||||
.children()
|
||||
.last();
|
||||
}
|
||||
|
@ -259,4 +260,17 @@ $(document)
|
|||
.load(loc);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Handle history snippet expansion.
|
||||
$(document)
|
||||
.ready(function () {
|
||||
$(".snippet .show-all")
|
||||
.on("click", function () {
|
||||
$(this)
|
||||
.parents(".snippet")
|
||||
.addClass("visually-hidden")
|
||||
.siblings(".full")
|
||||
.removeClass("visually-hidden");
|
||||
});
|
||||
});
|
|
@ -24,7 +24,7 @@ function replace_with_internal(table, internal_table, i) {
|
|||
}
|
||||
|
||||
function field_magic(i, e, fields) {
|
||||
if (fields[i] == "date" || fields[i] == "num") {
|
||||
if (fields[i] == "date" || fields[i] == "num" || fields[i] == "count") {
|
||||
$(e)
|
||||
.addClass("text-end");
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ $(document)
|
|||
|
||||
// HTML for the search widget
|
||||
var searcher = $.parseHTML(`
|
||||
<div class="input-group my-3">
|
||||
<div class="input-group input-group-sm my-3">
|
||||
<input type="search" class="search form-control" placeholder="Search"/>
|
||||
<button class="btn btn-outline-secondary search-reset" type="button">
|
||||
<i class="bi bi-x"></i>
|
||||
|
|
|
@ -1,101 +1,128 @@
|
|||
$(document).ready(function () {
|
||||
var form = $("form.review-requests");
|
||||
var saveButtons = form.find("[name=action][value^=\"save\"]");
|
||||
$(document)
|
||||
.ready(function () {
|
||||
var form = $("form.review-requests");
|
||||
var saveButtons = form.find("[name=action][value^='save']");
|
||||
|
||||
function updateSaveButtons() {
|
||||
saveButtons.prop("disabled", form.find("[name$=\"-action\"][value][value!=\"\"]").length == 0);
|
||||
}
|
||||
|
||||
function setControlDisplay(row) {
|
||||
var action = row.find("[name$=\"-action\"]").val();
|
||||
if (action == "assign") {
|
||||
row.find(".reviewer-controls").show();
|
||||
row.find(".close-controls").hide();
|
||||
row.find(".assign-action,.close-action").hide();
|
||||
}
|
||||
else if (action == "close") {
|
||||
row.find(".reviewer-controls").hide();
|
||||
row.find(".close-controls").show();
|
||||
row.find(".assign-action,.close-action").hide();
|
||||
}
|
||||
else {
|
||||
row.find(".reviewer-controls,.close-controls").hide();
|
||||
row.find(".assign-action,.close-action").show();
|
||||
function updateSaveButtons() {
|
||||
saveButtons.prop("disabled", form.find("[name$='-action'][value][value!=']")
|
||||
.length == 0);
|
||||
}
|
||||
|
||||
updateSaveButtons();
|
||||
}
|
||||
|
||||
form.find(".assign-action button").on("click", function () {
|
||||
var row = $(this).closest(".review-request");
|
||||
|
||||
var select = row.find(".reviewer-controls [name$=\"-reviewer\"]");
|
||||
if (!select.val()) {
|
||||
// collect reviewers already assigned in this session
|
||||
var reviewerAssigned = {};
|
||||
select.find("option").each(function () {
|
||||
if (this.value)
|
||||
reviewerAssigned[this.value] = 0;
|
||||
});
|
||||
|
||||
form.find("[name$=\"-action\"][value=\"assign\"]").each(function () {
|
||||
var v = $(this).closest(".review-request").find("[name$=\"-reviewer\"]").val();
|
||||
if (v)
|
||||
reviewerAssigned[v] += 1;
|
||||
});
|
||||
|
||||
// by default, the select box contains a sorted list, so
|
||||
// we should be able to select the first, unless that
|
||||
// person has already been assigned to review in this
|
||||
// session
|
||||
var found = null;
|
||||
var options = select.find("option").get();
|
||||
for (var round = 0; round < 100 && !found; ++round) {
|
||||
for (var i = 0; i < options.length && !found; ++i) {
|
||||
var v = options[i].value;
|
||||
if (!v)
|
||||
continue;
|
||||
|
||||
if (reviewerAssigned[v] == round)
|
||||
found = v;
|
||||
}
|
||||
function setControlDisplay(row) {
|
||||
var action = row.find("[name$='-action']")
|
||||
.val();
|
||||
if (action == "assign") {
|
||||
row.find(".reviewer-controls")
|
||||
.show();
|
||||
row.find(".close-controls")
|
||||
.hide();
|
||||
row.find(".assign-action,.close-action")
|
||||
.hide();
|
||||
} else if (action == "close") {
|
||||
row.find(".reviewer-controls")
|
||||
.hide();
|
||||
row.find(".close-controls")
|
||||
.show();
|
||||
row.find(".assign-action,.close-action")
|
||||
.hide();
|
||||
} else {
|
||||
row.find(".reviewer-controls,.close-controls")
|
||||
.hide();
|
||||
row.find(".assign-action,.close-action")
|
||||
.show();
|
||||
}
|
||||
|
||||
if (found)
|
||||
select.val(found);
|
||||
updateSaveButtons();
|
||||
}
|
||||
|
||||
row.find("[name$=\"-action\"]").val("assign");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
form.find(".assign-action button")
|
||||
.on("click", function () {
|
||||
var row = $(this)
|
||||
.closest(".review-request");
|
||||
|
||||
form.find(".reviewer-controls .undo").on("click", function () {
|
||||
var row = $(this).closest(".review-request");
|
||||
row.find("[name$=\"-action\"]").val("");
|
||||
row.find("[name$=\"-reviewer\"]").val($(this).data("initial"));
|
||||
setControlDisplay(row);
|
||||
});
|
||||
var select = row.find(".reviewer-controls [name$='-reviewer']");
|
||||
if (!select.val()) {
|
||||
// collect reviewers already assigned in this session
|
||||
var reviewerAssigned = {};
|
||||
select.find("option")
|
||||
.each(function () {
|
||||
if (this.value)
|
||||
reviewerAssigned[this.value] = 0;
|
||||
});
|
||||
|
||||
form.find(".close-action button").on("click", function () {
|
||||
var row = $(this).closest(".review-request");
|
||||
row.find("[name$=\"-action\"]").val("close");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
form.find("[name$='-action'][value='assign']")
|
||||
.each(function () {
|
||||
var v = $(this)
|
||||
.closest(".review-request")
|
||||
.find("[name$='-reviewer']")
|
||||
.val();
|
||||
if (v)
|
||||
reviewerAssigned[v] += 1;
|
||||
});
|
||||
|
||||
form.find(".close-controls .undo").on("click", function () {
|
||||
var row = $(this).closest(".review-request");
|
||||
row.find("[name$=\"-action\"]").val("");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
// by default, the select box contains a sorted list, so
|
||||
// we should be able to select the first, unless that
|
||||
// person has already been assigned to review in this
|
||||
// session
|
||||
var found = null;
|
||||
var options = select.find("option")
|
||||
.get();
|
||||
for (var round = 0; round < 100 && !found; ++round) {
|
||||
for (var i = 0; i < options.length && !found; ++i) {
|
||||
var v = options[i].value;
|
||||
if (!v)
|
||||
continue;
|
||||
|
||||
form.find("[name$=\"-action\"]").each(function () {
|
||||
var v = $(this).val();
|
||||
if (!v)
|
||||
return;
|
||||
if (reviewerAssigned[v] == round)
|
||||
found = v;
|
||||
}
|
||||
}
|
||||
|
||||
var row = $(this).closest(".review-request");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
if (found)
|
||||
select.val(found);
|
||||
}
|
||||
|
||||
updateSaveButtons();
|
||||
});
|
||||
row.find("[name$='-action']")
|
||||
.val("assign");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
|
||||
form.find(".reviewer-controls .undo")
|
||||
.on("click", function () {
|
||||
var row = $(this)
|
||||
.closest(".review-request");
|
||||
row.find("[name$='-action']")
|
||||
.val("");
|
||||
row.find("[name$='-reviewer']")
|
||||
.val($(this)
|
||||
.data("initial"));
|
||||
setControlDisplay(row);
|
||||
});
|
||||
|
||||
form.find(".close-action button")
|
||||
.on("click", function () {
|
||||
var row = $(this)
|
||||
.closest(".review-request");
|
||||
row.find("[name$='-action']")
|
||||
.val("close");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
|
||||
form.find(".close-controls .undo")
|
||||
.on("click", function () {
|
||||
var row = $(this)
|
||||
.closest(".review-request");
|
||||
row.find("[name$='-action']")
|
||||
.val("");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
|
||||
form.find("[class$='-action']")
|
||||
.each(function () {
|
||||
var row = $(this)
|
||||
.closest(".review-request");
|
||||
setControlDisplay(row);
|
||||
});
|
||||
|
||||
updateSaveButtons();
|
||||
});
|
|
@ -33,7 +33,7 @@
|
|||
href="{% static 'ietf/images/apple-touch-icon.png' %}"/>
|
||||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
</head>
|
||||
<body class="position-relative"
|
||||
<body {% block bodyAttrs %}{% endblock %} class="position-relative"
|
||||
data-group-menu-data-url="{% url 'ietf.group.views.group_menu_data' %}">
|
||||
<nav class="navbar navbar-expand-lg {% if server_mode and server_mode != "production" %} navbar-light bg-warning {% else %} navbar-dark bg-secondary {% endif %} {% if navbar_mode %} {{ navbar_mode }} {% else %} fixed-top {% endif %}">
|
||||
<div class="container-fluid">
|
||||
|
|
|
@ -134,9 +134,4 @@
|
|||
{% endblock %}
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
<script>
|
||||
$(".snippet .show-all").on("click", function () {
|
||||
$(this).parents(".snippet").addClass("visually-hidden").siblings(".full").removeClass("visually-hidden");
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
@ -28,30 +28,20 @@
|
|||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for ad in group.ads %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=ad.person.name %}">{{ ad.person.plain_name }}</a>
|
||||
<a href="mailto:{{ ad.email.address }}">
|
||||
<span class="bi bi-envelope tiny"></span>
|
||||
</a>
|
||||
{% person_link ad.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for secretary in group.secretaries %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=secretary.person.name %}">
|
||||
{{ secretary.person.plain_name }}
|
||||
</a>
|
||||
<a href="mailto:{{ secretary.email.address }}">
|
||||
<span class="bi bi-envelope tiny"></span>
|
||||
</a>
|
||||
{% person_link
|
||||
{{.%erson.plain_nam
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}</a>
|
||||
<a href="mailto:{{ chair.email.address }}">
|
||||
<span class="bi bi-envelope tiny"></span>
|
||||
</a>
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
|
|
|
@ -1,56 +1,58 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active directorates{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active Directorates</h1>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<table class="my-3 table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Team</th>
|
||||
<th>Name</th>
|
||||
<th>Reviews</th>
|
||||
<th>Area</th>
|
||||
<th>AD</th>
|
||||
<th>Secretaries</th>
|
||||
<th>Chairs</th>
|
||||
<th data-sort="team">Team</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="reviews">Reviews</th>
|
||||
<th data-sort="area">Area</th>
|
||||
<th data-sort="ad">AD</th>
|
||||
<th data-sort="secretaries">Secretaries</th>
|
||||
<th data-sort="chairs">Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in dirs %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td class="text-center">
|
||||
{% if group.type_id == 'review' %}
|
||||
<span class="bi bi-check tiny"><span class="hidden">yes</span></span>
|
||||
<span class="bi bi-check-lg text-success"></span>
|
||||
<span class="visually-hidden">yes</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">{{ group.parent.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">{{ group.parent.acronym }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% for ad in group.ads %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=ad.person.name %}">{{ ad.person.plain_name }}
|
||||
</a><a href="mailto:{{ ad.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link ad.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for secretary in group.secretaries %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=secretary.person.name %}">{{ secretary.person.plain_name }}</a>
|
||||
<a href="mailto:{{ secretary.email.address }}"><span class="bi bi-envelope tiny"></span></a> {% if not forloop.last %}, {% endif %}
|
||||
{% person_link secretary.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}</a>
|
||||
<a href="mailto:{{ chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -58,7 +60,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,28 +1,28 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active groups{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active groups</h1>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-2">Type</th>
|
||||
<th class="col-md-1">Count</th>
|
||||
<th class="col-md-9">Description</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="count">Count</th>
|
||||
<th data-sort="description">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for typename in grouptypes %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.active_groups" group_type=typename.slug%}">{{ typename.name }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.active_groups" group_type=typename.slug %}">{{ typename.name }}</a>
|
||||
</td>
|
||||
<td>{{ typename.group_count }}</td>
|
||||
<td>{{ typename.desc }}</td>
|
||||
</tr>
|
||||
|
@ -30,7 +30,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,45 +1,49 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active IAB groups{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{% regroup iabgroups by type as grouped_groups %}
|
||||
{% for grouptype in grouped_groups %}
|
||||
<h1>Active {% firstof grouptype.grouper.verbose_name grouptype.grouper.name %}{{grouptype.list|pluralize}}</h1>
|
||||
<h1>Active IAB groups</h1>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{grouptype.grouper}}</th>
|
||||
<th>Name</th>
|
||||
<th>Lead</th>
|
||||
<th data-sort="grouptype">Group</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="leaders">Leads</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
{% regroup iabgroups by type as grouped_groups %}
|
||||
{% for grouptype in grouped_groups %}
|
||||
<thead>
|
||||
<tr class="table-info"><th colspan="3">
|
||||
{% firstof grouptype.grouper.verbose_name grouptype.grouper.name %}{{ grouptype.list|pluralize }}
|
||||
</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in grouptype.list %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for lead in group.leads %}
|
||||
<a href="mailto:{{ lead.email.address }}">{{ lead.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link lead.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,40 +1,40 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active research area groups{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active research area groups</h1>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Team</th>
|
||||
<th>Name</th>
|
||||
<th>Secretaries</th>
|
||||
<th>Chairs</th>
|
||||
<th data-sort="team">Team</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="secretaries">Secretaries</th>
|
||||
<th data-sort="chairs">Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in groups %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for secretary in group.secretaries %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=secretary.person.name %}">{{ secretary.person.plain_name }}
|
||||
</a><a href="mailto:{{ secretary.email.address }}"><span class="bi bi-envelope tiny"></span></a> {% if not forloop.last %}, {% endif %}
|
||||
{% person_link secretary.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}
|
||||
</a><a href="mailto:{{ chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -42,7 +42,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,50 +1,51 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active review directorates{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active Review Directorates</h1>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Team</th>
|
||||
<th>Name</th>
|
||||
<th>Area</th>
|
||||
<th>AD</th>
|
||||
<th>Secretaries</th>
|
||||
<th>Chairs</th>
|
||||
<th data-sort"team">Team</th>
|
||||
<th data-sort"name">Name</th>
|
||||
<th data-sort"area">Area</th>
|
||||
<th data-sort"ad">AD</th>
|
||||
<th data-sort"secretaries">Secretaries</th>
|
||||
<th data-sort"chairs">Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in dirs %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">{{ group.parent.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">{{ group.parent.acronym }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% for ad in group.ads %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=ad.person.name %}">{{ ad.person.plain_name }}
|
||||
</a><a href="mailto:{{ ad.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link ad.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for secretary in group.secretaries %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=secretary.person.name %}">{{ secretary.person.plain_name }}</a>
|
||||
<a href="mailto:{{ secretary.email.address }}"><span class="bi bi-envelope tiny"></span></a> {% if not forloop.last %}, {% endif %}
|
||||
{% person_link secretary.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}</a>
|
||||
<a href="mailto:{{ chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %}, {% endif %}
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -52,7 +53,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,52 +1,51 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active IRTF research groups{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active IRTF research groups</h1>
|
||||
|
||||
<h2>IRTF chair</h2>
|
||||
<h2 class="mt-4">IRTF chair</h2>
|
||||
<p>
|
||||
<a href="mailto:{{ irtf.chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=irtf.chair.person.name %}">{{ irtf.chair.person.plain_name }}</a>
|
||||
{% person_link irtf.chair.person %}
|
||||
</p>
|
||||
|
||||
<h2>Active research groups</h2>
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.all_status" %}">Status Reports</a>
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.chair_photos" group_type="rg" %}">Chair Photos</a>
|
||||
|
||||
<h2 class="mt-4">Active research groups</h2>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.all_status" %}">Status reports</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.chair_photos" group_type="rg" %}">Chair photos</a>
|
||||
<table class="table table-striped table-sm tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Group</th>
|
||||
<th>Name</th>
|
||||
<th>Chairs</th>
|
||||
<th data-sort="group">Group</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="chairs">Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in groups %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">
|
||||
{{ group.acronym }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}</a>
|
||||
<a href="mailto:{{ chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %} , {% endif %}
|
||||
{% endfor %}</td>
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,14 +1,11 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active teams{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Active teams</h1>
|
||||
|
@ -23,21 +20,21 @@
|
|||
<tbody>
|
||||
{% for group in teams %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
|
||||
<th>{{ group.name }}</th>
|
||||
<td>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.acronym %}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=chair.person.name %}">{{ chair.person.plain_name }}</a>
|
||||
<a href="mailto:{{ chair.email.address }}"><span class="bi bi-envelope tiny"></span></a>{% if not forloop.last %} , {% endif %}
|
||||
{% person_link chair.person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,100 +1,95 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static group_filters %}
|
||||
|
||||
{% load origin static group_filters person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active IETF working groups{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
|
||||
<h1>Active IETF working groups</h1>
|
||||
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.concluded_groups" %}">Concluded WGs</a>
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.all_status" %}">Status Reports</a>
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.chair_photos" group_type="wg" %}">Chair Photos</a>
|
||||
|
||||
{% for area in areas %}
|
||||
<h2 id="{{area.acronym}}">{{ area.name }} ({{ area.acronym }})</h2>
|
||||
|
||||
{% if area.ads_and_pre_ads %}
|
||||
<h3>{{ area.acronym }} Area Director{{ area.ads_and_pre_ads|pluralize }} (AD{{ area.ads_and_pre_ads|pluralize }})</h3>
|
||||
<ul class="list-unstyled">
|
||||
{% for ad in area.ads_and_pre_ads %}
|
||||
<li>
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=ad.person.name %}">{{ ad.person.plain_name }}</a>
|
||||
<a href="mailto:{{ ad.email.address }}"><span class="bi bi-envelope tiny"></span></a>
|
||||
{% if ad.name == "pre-ad" %} (Incoming AD){% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if area.urls %}
|
||||
<h3>{{ area.acronym }} area-specific web page{{ area.urls|pluralize}}</h3>
|
||||
<ul class="list-unstyled">
|
||||
{% for url in area.urls %}
|
||||
<li><a href="{{ url.value }}">{{ url.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if area.groups %}
|
||||
<h3>{{ area.acronym }} active WG{{ area.groups|pluralize}} ({{area.groups.count}})</h3>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Group</th>
|
||||
<th>Responsible AD</th>
|
||||
<th>Name</th>
|
||||
<th>Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in area.groups %}
|
||||
<tr>
|
||||
<td><div id="{{group.acronym}}"><a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">{{ group.acronym }}</a></div></td>
|
||||
<td>
|
||||
{% if group.ad_role %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=group.ad_role.person.name %}">{{ group.ad_role.person.plain_name.split.0 }}</a>
|
||||
<a href="mailto:{{ group.ad_role.email.address }}"><span class="bi bi-envelope tiny"></span></a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}{% role_person_link chair %}{% if not forloop.last %} , {% endif %}
|
||||
{% endfor %}
|
||||
{% if group.ad_out_of_area %}(Assigned AD: {% role_person_link group.ad_role %}){% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<h3>No active {{ area.acronym }} WGs</h3>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
<div class="col-md-2 d-print-none" id="affix">
|
||||
<ul class="nav nav-pills nav-stacked small" data-bs-spy="affix">
|
||||
{% for area in areas %}
|
||||
<li><a href="#{{area.acronym}}">{{ area.name }}</a></li>
|
||||
<h1>Active IETF working groups</h1>
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.concluded_groups" %}">Concluded WGs</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.all_status" %}">Status reports</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.chair_photos" group_type="wg" %}">Chair photos</a>
|
||||
</div>
|
||||
{% for area in areas %}
|
||||
<h2 class="mt-5" id="{{ area.acronym }}">{{ area.name }} ({{ area.acronym }})</h2>
|
||||
{% if area.ads_and_pre_ads %}
|
||||
<h3 class="mt-3 navskip">
|
||||
{{ area.acronym }} Area Director{{ area.ads_and_pre_ads|pluralize }} (AD{{ area.ads_and_pre_ads|pluralize }})
|
||||
</h3>
|
||||
<ul class="list-unstyled">
|
||||
{% for ad in area.ads_and_pre_ads %}
|
||||
<li>
|
||||
{% person_link ad.person %}
|
||||
{% if ad.name == "pre-ad" %}<span class="badge bg-info">Incoming AD</span>{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if area.urls %}
|
||||
<h3 class="mt-3 navskip">{{ area.acronym }} Area-specific web page{{ area.urls|pluralize }}</h3>
|
||||
<ul class="list-unstyled">
|
||||
{% for url in area.urls %}
|
||||
<li>
|
||||
<a href="{{ url.value }}">{{ url.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% if area.groups %}
|
||||
<h3 class="mt-3 navskip">
|
||||
{{ area.acronym }} active WG{{ area.groups|pluralize }}
|
||||
<span class="text-muted">({{ area.groups.count }})</span>
|
||||
</h3>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="group">Group</th>
|
||||
<th data-sort="responsible">Responsible AD</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="chairs">Chairs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for group in area.groups %}
|
||||
<tr>
|
||||
<td>
|
||||
<div id="{{ group.acronym }}">
|
||||
<a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">
|
||||
{{ group.acronym }}
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
{% if group.ad_role %}
|
||||
{% person_link group.ad_role.person %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<td>
|
||||
{% for chair in group.chairs %}
|
||||
{% role_person_link chair %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
{% if group.ad_out_of_area %}
|
||||
(Assigned AD: {% role_person_link group.ad_role %})
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<h3 class="mt-3 navskip">No active {{ area.acronym }} WGs</h3>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,26 +1,24 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Add comment for {{ group }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Add comment<br><small class="text-muted">{{ group }} ({{ group.acronym }})</small></h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
Add comment
|
||||
<br>
|
||||
<small class="text-muted">{{ group }} ({{ group.acronym }})</small>
|
||||
</h1>
|
||||
<form class="my-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<p class="form-text">The comment will be added to the history trail for the group.</p>
|
||||
|
||||
|
||||
|
||||
<p class="form-text">
|
||||
The comment will be added to the history trail for the group.
|
||||
</p>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.group.views.history" acronym=group.acronym %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.group.views.history" acronym=group.acronym %}">Back</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,66 +1,20 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block morecss %}
|
||||
.well { max-width: 150px;}
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
{% block title %}Chair Photos{% endblock %}
|
||||
|
||||
{% block title %}{{ group_type | upper }} {{ role }} photos{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<h1>{{ group_type | upper }} {{ role }} Photos</h1>
|
||||
|
||||
<h1>{{ group_type | upper }} {{ role }} photos</h1>
|
||||
{% regroup roles by last_initial as alphabet_blocks %}
|
||||
<div class="col-md-11">
|
||||
{% for letter in alphabet_blocks %}
|
||||
<div class="row" id="{{letter.grouper}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{letter.grouper}}</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-inline">
|
||||
{% regroup letter.list by person as person_groups %}
|
||||
{% for person_with_groups in person_groups %}
|
||||
<li class="list-inline-item">
|
||||
<div class="well photo-thumbnail">
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=person_with_groups.grouper.name %}">
|
||||
<div>
|
||||
{% if person_with_groups.grouper.photo_thumb %}
|
||||
<img width=100 src="{{person_with_groups.grouper.photo_thumb.url}}" alt="Photo of {{person_with_groups.grouper.name}}"/>
|
||||
{% else %}
|
||||
<img width=100 src="{{ MEDIA_URL }}photo/nopictureavailable.jpg" alt="No picture available"/>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="photo-name">
|
||||
<strong>{{person_with_groups.grouper.plain_name}}</strong>
|
||||
</div>
|
||||
</a>
|
||||
<div class="photo-role-list">
|
||||
{% for role in person_with_groups.list %}
|
||||
<a href="{% url 'ietf.group.views.group_home' acronym=role.group.acronym %}">{{role.group.acronym}}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-1 d-print-none" id="affix">
|
||||
<ul class="nav nav-pills nav-stacked small fixed" data-bs-spy="affix">
|
||||
{% for letter in alphabet_blocks %}
|
||||
<li><a href="#{{letter.grouper}}">{{letter.grouper}}</a></li>
|
||||
{% for letter in alphabet_blocks %}
|
||||
<h2 class="mt-4" id="{{ letter.grouper }}">{{ letter.grouper }}</h2>
|
||||
{% regroup letter.list by person as person_groups %}
|
||||
<div class="mt-0 row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-2 row-cols-xl-3 row-cols-xxl-3 g-3">
|
||||
{% for person_with_groups in person_groups %}
|
||||
<div class="col">{% include "person/photo.html" with person=person_with_groups.grouper groups=person_with_groups.list%}</div>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -1,3 +1,4 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -5,48 +6,41 @@
|
|||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
|
||||
|
||||
{% block title %}
|
||||
Status updates
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Status updates{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>
|
||||
Status updates
|
||||
</h1>
|
||||
|
||||
<h1>Status updates</h1>
|
||||
{% regroup wg_reports by group.parent as area_items %}
|
||||
{% for area_item in area_items %}
|
||||
<h2> {{area_item.grouper.acronym|upper}}
|
||||
<small>{{area_item.grouper.name}}</small> </h2>
|
||||
<table class="table table-striped table-sm">
|
||||
{% for rpt in area_item.list %}
|
||||
<tr>
|
||||
<td>{{ rpt.group.acronym }}
|
||||
{% if rpt.group.state.slug != "active" %}
|
||||
<span class="badge bg-success">{{ rpt.group.state.slug|upper }}</span>
|
||||
{% endif %}
|
||||
<br> {{rpt.time|date:"Y-m-d"}}</td>
|
||||
<td><pre class="pasted">{{ rpt.desc|default:"(none)"|linkify }}</pre></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
|
||||
<h2> IRTF <small>Internet Research Task Force</small> </h2>
|
||||
<table class="table table-striped table-sm">
|
||||
{% for rpt in rg_reports %}
|
||||
<tr>
|
||||
<td>{{ rpt.group.acronym }}
|
||||
<h2 class="mt-3">{{ area_item.grouper.name }} ({{ area_item.grouper.acronym|upper }})</h2>
|
||||
{% for rpt in area_item.list %}
|
||||
<div class="card my-3">
|
||||
<div class="card-header">
|
||||
{{ rpt.group.acronym }}
|
||||
{% if rpt.group.state.slug != "active" %}
|
||||
<span class="badge bg-success">{{ rpt.group.state.slug|upper }}</span>
|
||||
{% endif %}
|
||||
<br> {{rpt.time|date:"Y-m-d"}}</td>
|
||||
<td><pre class="pasted">{{ rpt.desc|default:"(none)"|linkify }}</pre></td>
|
||||
</tr>
|
||||
{{ rpt.time|date:"Y-m-d" }}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<pre class="pasted">{{ rpt.desc|default:"(none)"|linkify }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
<h2 class="mt-3">Internet Research Task Force (IRTF)</h2>
|
||||
{% for rpt in rg_reports %}
|
||||
<div class="card my-3">
|
||||
<div class="card-header">
|
||||
{{ rpt.group.acronym }}
|
||||
{% if rpt.group.state.slug != "active" %}
|
||||
<span class="badge bg-success">{{ rpt.group.state.slug|upper }}</span>
|
||||
{% endif %}
|
||||
{{ rpt.time|date:"Y-m-d" }}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<pre class="pasted">{{ rpt.desc|default:"(none)"|linkify }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,50 +1,49 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}BOFs{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<h1>Birds-of-a-feather (BOF) groups</h1>
|
||||
|
||||
<p>Groups in the <i>BOF</i> state.</p>
|
||||
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
<p><a class="btn btn-primary" role="button" href="{% url 'ietf.group.views.edit' group_type='wg' action='create' %}">Create new BOF</a></p>
|
||||
<a class="btn btn-primary"
|
||||
role="button"
|
||||
href="{% url 'ietf.group.views.edit' group_type='wg' action='create' %}">
|
||||
Create new BOF
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if not groups %}
|
||||
<p>No BOFs found.</p>
|
||||
<p>
|
||||
No BOFs found.
|
||||
</p>
|
||||
{% else %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>BOF</th>
|
||||
<th>Name</th>
|
||||
<th>Date</th>
|
||||
<th data-sort="bof">BOF</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="date">Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for g in groups %}
|
||||
<tr>
|
||||
<td><a href="{{ g.about_url }}">{{ g.acronym }}</a></td>
|
||||
<td>
|
||||
<a href="{{ g.about_url }}">{{ g.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ g.name }}</td>
|
||||
<td class="text-nowrap">{{ g.time|date:"Y-m-d" }}</td>
|
||||
<td>{{ g.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,22 +1,21 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>{% block title %}Change your review secretary settings for {{ group.acronym }}{% endblock %}</h1>
|
||||
|
||||
<form class="change-review-secretary-settings" method="post">{% csrf_token %}
|
||||
<h1>
|
||||
{% block title %}Change your review secretary settings for {{ group.acronym }}{% endblock %}
|
||||
</h1>
|
||||
<form class="my-3 change-review-secretary-settings" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form settings_form %}
|
||||
|
||||
|
||||
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Cancel</a>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="change_settings">Save</button>
|
||||
|
||||
|
||||
<button class="btn btn-primary"
|
||||
type="submit"
|
||||
name="action"
|
||||
value="change_settings">Save</button>
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,132 +1,159 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/datepicker.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/list.css' %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Change reviewer settings for {{ group.acronym }} for {{ reviewer_email }}{% endblock %}
|
||||
|
||||
{% block title %}Change {{ group.acronym }} reviewer settings for {{ reviewer_email }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>Change reviewer settings for {{ group.acronym }} for {{ reviewer_email }}</h1>
|
||||
|
||||
<h3>Settings</h3>
|
||||
|
||||
<form class="change-reviewer-settings" method="post">{% csrf_token %}
|
||||
<h1>
|
||||
Change {{ group.acronym }} reviewer settings
|
||||
<br>
|
||||
<small class="text-muted">{{ reviewer_email }}</small>
|
||||
</h1>
|
||||
<h2 class="mt-5">Settings</h2>
|
||||
<form class="my-3 change-reviewer-settings" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form settings_form %}
|
||||
|
||||
|
||||
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Cancel</a>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="change_settings">Save</button>
|
||||
|
||||
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Back</a>
|
||||
<button class="btn btn-primary"
|
||||
type="submit"
|
||||
name="action"
|
||||
value="change_settings">Save</button>
|
||||
</form>
|
||||
|
||||
<h3>Unavailable periods</h3>
|
||||
|
||||
<p>You can register periods where reviews should not be assigned.</p>
|
||||
|
||||
<h2 class="mt-5">Unavailable periods</h2>
|
||||
<p>
|
||||
You can register periods where reviews should not be assigned.
|
||||
</p>
|
||||
{% if unavailable_periods %}
|
||||
<table class="table">
|
||||
<th>Period</th>
|
||||
<th>Availability</th>
|
||||
<th>Reason</th>
|
||||
<th> </th>
|
||||
<th> </th>
|
||||
<table class="table table-sm tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="date">Period</th>
|
||||
<th data-sort="availability">Availability</th>
|
||||
<th data-sort="reason">Reason</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for o in unavailable_periods %}
|
||||
<tr class="unavailable-period-{{ o.state }}">
|
||||
<td>
|
||||
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}
|
||||
</td>
|
||||
<td>{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}</td>
|
||||
<td>{{ o.get_availability_display }}</td>
|
||||
<td>{{ o.reason }}</td>
|
||||
<td>
|
||||
{% if not o.end_date %}
|
||||
<form method="post" class="form-inline" style="display:inline-block">
|
||||
<form class="row row-cols-sm-auto g-3 align-items-center" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="period_id" value="{{ o.pk }}">
|
||||
{% bootstrap_form o.end_form %}
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="action" value="end_period">End period</button>
|
||||
{% bootstrap_form o.end_form layout="inline" size="sm" %}
|
||||
<button type="submit"
|
||||
class="btn btn-primary btn-sm"
|
||||
name="action"
|
||||
value="end_period">End period</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<td class="text-end">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="period_id" value="{{ o.pk }}">
|
||||
<button type="submit" class="btn btn-danger btn-sm" name="action" value="delete_period">Delete</button>
|
||||
<button type="submit"
|
||||
class="btn btn-danger btn-sm"
|
||||
name="action"
|
||||
value="delete_period">Delete</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>No periods found.</p>
|
||||
<p class="alert alert-info">
|
||||
No periods found.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<div><a class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#add-new-period">Add a new period</a></div>
|
||||
|
||||
<div id="add-new-period" {% if not period_form.errors %}class="collapse"{% endif %}>
|
||||
<h4>Add a new period</h4>
|
||||
|
||||
<div class="my-3">
|
||||
<a class="btn btn-primary"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#add-new-period">Add a new period</a>
|
||||
</div>
|
||||
<div id="add-new-period"
|
||||
{% if not period_form.errors %}class="collapse"{% endif %}>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form period_form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="action" value="add_period">Add period</button>
|
||||
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
name="action"
|
||||
value="add_period">Add period</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<h3>History of settings</h3>
|
||||
|
||||
<h2 class="mt-5">History of settings</h2>
|
||||
<div id="history">
|
||||
<table class="table table-sm table-striped">
|
||||
<tr>
|
||||
<th class="col-md-1">Date</th>
|
||||
<th class="col-md-1">By</th>
|
||||
<th class="col-md-10">Description</th>
|
||||
</tr>
|
||||
{% for h in reviewersettings.history.all %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{{h.history_date|date}}</td>
|
||||
<td>{{h.history_user.person}}</td>
|
||||
<td>{{h.history_change_reason}}</td>
|
||||
<th data-sort="date">Date</th>
|
||||
<th data-sort="by">By</th>
|
||||
<th data-sort="description">Description</th>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for h in reviewersettings.history.all %}
|
||||
<tr>
|
||||
<td>{{ h.history_date|date }}</td>
|
||||
<td>{% person_link h.history_user.person %}</td>
|
||||
<td>{{ h.history_change_reason }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>History of unavailable periods</h3>
|
||||
<h2 class="mt-5">History of unavailable periods</h2>
|
||||
<div id="history">
|
||||
<table class="table table-sm table-striped">
|
||||
<tr>
|
||||
<th class="col-md-1">Date</th>
|
||||
<th class="col-md-1">By</th>
|
||||
<th class="col-md-10">Description</th>
|
||||
</tr>
|
||||
{% for h in unavailable_periods_history.all %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{{h.history_date|date}}</td>
|
||||
<td>{{h.history_user.person}}</td>
|
||||
<td>{{h.history_change_reason}}</td>
|
||||
<th dta-sort="date">Date</th>
|
||||
<th dta-sort="by">
|
||||
By
|
||||
</th>
|
||||
<th dta-sort="description">
|
||||
Description
|
||||
</th>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for h in unavailable_periods_history.all %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ h.history_date|date }}
|
||||
</td>
|
||||
<td>
|
||||
{% person_link h.history_user.person %}
|
||||
</td>
|
||||
<td>
|
||||
{{ h.history_change_reason }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p style="padding-top: 2em;">
|
||||
<a href="{{ back_url }}" class="btn btn-primary">Back</a>
|
||||
<a href="{{ back_url }}" class="btn btn-primary">
|
||||
Back
|
||||
</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/datepicker.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/datepicker.js' %}">
|
||||
</script>
|
||||
<script src="{% static 'ietf/js/list.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,46 +1,45 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Chartering or re-chartering groups{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load ballot_icon %}
|
||||
|
||||
<h1>Chartering or re-chartering groups</h1>
|
||||
|
||||
<p>
|
||||
Groups with a charter in one of the following states:
|
||||
</p>
|
||||
<ul>
|
||||
{% for s in charter_states %}
|
||||
<li>{{ s.name }}</li>
|
||||
{% endfor %}
|
||||
{% for s in charter_states %}<li>{{ s.name }}</li>{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% for t in group_types %}
|
||||
<h2>{{ t.name }}s</h2>
|
||||
|
||||
<h2 class="mt-3">{{ t.name }}s</h2>
|
||||
{% if t.can_manage %}
|
||||
<p><a class="btn btn-primary" role="button" href="{% url 'ietf.group.views.edit' group_type=t.pk action='charter' %}">Charter new {{ t.name }}</a></p>
|
||||
<p>
|
||||
<a class="btn btn-primary"
|
||||
role="button"
|
||||
href="{% url 'ietf.group.views.edit' group_type=t.pk action='charter' %}">
|
||||
Charter new {{ t.name }}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if not t.chartering_groups %}
|
||||
<p>Found no groups in a chartering state.</p>
|
||||
<p>
|
||||
Found no groups in a chartering state.
|
||||
</p>
|
||||
{% else %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ t.name }}</th>
|
||||
<th>Name</th>
|
||||
<th>Date</th>
|
||||
<th>Status</th>
|
||||
<th data-sort="acronym">{{ t.name }}</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="date">Date</th>
|
||||
<th data-sort="status">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -49,22 +48,20 @@
|
|||
<td>
|
||||
<a href="{{ g.about_url }}">{{ g.acronym }}</a>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=g.charter.name %}">{{ g.name }}</a>
|
||||
</td>
|
||||
|
||||
<td class="text-nowrap">{{ g.charter.time|date:"Y-m-d" }}</td>
|
||||
|
||||
<td>
|
||||
<div class="float-end">{% ballot_icon g.charter %}</div>
|
||||
|
||||
{{ g.charter.get_state.name }}
|
||||
{% if g.chartering_type == "initial" %}(Initial Chartering){% endif %}
|
||||
{% if g.chartering_type == "recharter" %}(Rechartering){% endif %}
|
||||
{% if not g.chartering_type and g.state_id != "active" %}({{ g.state.name }}){% endif %}
|
||||
|
||||
{% if g.charter.telechat_date %}<br>IESG Telechat: {{ g.charter.telechat_date|date:"Y-m-d" }}{% endif %}
|
||||
{% if g.charter.telechat_date %}
|
||||
<br>
|
||||
IESG Telechat: {{ g.charter.telechat_date|date:"Y-m-d" }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
@ -73,7 +70,6 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,33 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Request closing of {{ group.acronym }} {{ group.type.name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Request closing of {{ group.acronym }} {{ group.type.name }}</h1>
|
||||
|
||||
<p>
|
||||
<p class="alert alert-info">
|
||||
Please provide instructions regarding the disposition of each
|
||||
active Internet-Draft (such as to withdraw the draft, move it to
|
||||
another group, convert it to an individual submission, and so on),
|
||||
wording for the closure announcement, and the status of the group
|
||||
mailing list (will it remain open or should it be closed).
|
||||
</p>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{{ group.about_url }}">Back</a>
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,118 +1,67 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015-2021, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
|
||||
.fixed { position: fixed; }
|
||||
|
||||
.bs-docs-sidebar .nav .nav>li>a { padding-left: 20px; }
|
||||
|
||||
.bs-docs-sidebar .nav ul.nav { display: none; }
|
||||
|
||||
.bs-docs-sidebar .nav>.active>ul.nav { display: block; }
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#navscroller"{% endblock %}
|
||||
|
||||
{% block title %}Concluded groups{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<div class="col-md-10">
|
||||
<h1>Concluded groups</h1>
|
||||
|
||||
<p class="alert alert-info">Note that the information on historical groups may be inaccurate.</p>
|
||||
|
||||
{% for label, groups in sections.items %}
|
||||
<div id="{{label}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{label}}</div>
|
||||
<div class="card-body">
|
||||
|
||||
{% if label == "WGs" %}
|
||||
{% comment "Replace this if that tools page is moved" %}
|
||||
<p>
|
||||
Some additional concluded WGs may
|
||||
be present <a href="https://tools.ietf.org/wg/concluded">here</a>.
|
||||
</p>
|
||||
{% endcomment %}
|
||||
{% elif label == "RGs" %}
|
||||
<p>
|
||||
The information below is incomplete and misses a few older RGs.
|
||||
Please check the <a href="https://irtf.org/groups">IRTF site</a>
|
||||
for more complete information.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if not groups %}
|
||||
<p><b>No groups found.</b></p>
|
||||
{% else %}
|
||||
{% regroup groups by parent as grouped_by_areas %}
|
||||
{% for area_grouping in grouped_by_areas %}
|
||||
<div id="{{label}}-{{area_grouping.grouper.name|default:'unknown'|slugify}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{area_grouping.grouper.name|default:'Unknown area'}}</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-1">Group</th>
|
||||
<th class="col-md-7">Name</th>
|
||||
<th class="col-md-1">Start</th>
|
||||
<th class="col-md-1">Concluded</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for g in area_grouping.list %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ g.about_url }}">{{ g.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ g.name }}</td>
|
||||
<td>{{ g.start_date|date:"Y-m" }}</td>
|
||||
<td>{{ g.conclude_date|date:"Y-m" }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 d-print-none" id="navscroller">
|
||||
<ul class="nav nav-pills nav-stacked small fixed" >
|
||||
{% for label, groups in sections.items %}
|
||||
<li>
|
||||
<a href="#{{label}}">{{label}}</a>
|
||||
{% regroup groups by parent as grouped_by_areas %}
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
{% for area_grouping in grouped_by_areas %}
|
||||
<li>
|
||||
<a href="#{{label}}-{{area_grouping.grouper.name|default:'unknown'|slugify}}">
|
||||
{{area_grouping.grouper.name|default:'Unknown area'}}
|
||||
</a>
|
||||
</li>
|
||||
<h1>Concluded groups</h1>
|
||||
<p class="alert alert-info">
|
||||
Note that the information on historical groups may be inaccurate.
|
||||
</p>
|
||||
{% for label, groups in sections.items %}
|
||||
<h2 class="mt-5" id="{{ label }}">{{ label }}</h2>
|
||||
{% if label == "WGs" %}
|
||||
{% elif label == "RGs" %}
|
||||
<p class="alert alert-info">
|
||||
The information below is incomplete and misses a few older RGs.
|
||||
Please check the
|
||||
<a href="https://irtf.org/groups">IRTF site</a>
|
||||
for more complete information.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if not groups %}
|
||||
<p>
|
||||
<b>No groups found.</b>
|
||||
</p>
|
||||
{% else %}
|
||||
{% regroup groups by parent as grouped_by_areas %}
|
||||
{% for area_grouping in grouped_by_areas %}
|
||||
{% if area_grouping.grouper %}
|
||||
<h3 class="mt-3"
|
||||
id="{{ label }}-{{ area_grouping.grouper.name|default:'unknown'|slugify }}">
|
||||
{{ area_grouping.grouper.name|default:'Unknown area' }}
|
||||
</h3>
|
||||
{% endif %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="group">Group</th>
|
||||
<th data-sort="name">Name</th>
|
||||
<th data-sort="date">Start</th>
|
||||
<th data-sort="date">Concluded</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for g in area_grouping.list %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ g.about_url }}">{{ g.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ g.name }}</td>
|
||||
<td>{{ g.start_date|date:"Y-m" }}</td>
|
||||
<td>{{ g.conclude_date|date:"Y-m" }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,116 +1,154 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% load django_bootstrap5 static %}
|
||||
{% block title %}Customize Workflow for {{ group.acronym }} {{ group.type.name }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<div id="group-customize-workflow">
|
||||
|
||||
<h1>Customize Workflow for {{ group.acronym }} {{ group.type.name }}</h1>
|
||||
|
||||
<p class="form-text">Below you can customize the draft states and tags used in the
|
||||
<a href="{{ group.about_url }}">{{ group.acronym }} {{ group.type.name }}</a>. Note that some states are
|
||||
mandatory for group operation and cannot be deactivated.</p>
|
||||
|
||||
{% if group.type_id == "wg" %}
|
||||
<p class="form-text">You can see the default Working Group I-D State Diagram
|
||||
in <a href="/doc/html/rfc6174#section-4.1">Section 4.1 of RFC6174</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
<h3>States</h3>
|
||||
|
||||
<table class="table state-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>State</th>
|
||||
<th>Next states</th>
|
||||
<th>Turn on/off</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for state in states %}
|
||||
<tr class="{% if not state.used %}inactive{% endif %}">
|
||||
<td class="name">
|
||||
{{ state.name }} {% if not state.used %} (not used in {{ group.acronym }}){% endif %} {{ state|statehelp }}
|
||||
</td>
|
||||
<td class="next-states">
|
||||
<div>
|
||||
{% if state.used_next_states %}
|
||||
{% for n in state.used_next_states %}<div class="state">{{ n.name }}</div>{% endfor %}
|
||||
{% else %}
|
||||
<div><i>None</i></div>
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
<button class="btn btn-primary btn-sm {% if not state.used %}disabled{% endif %}" title="Click to set next states for state" data-bs-toggle="collapse" data-bs-target="#nexts{{ state.pk }}" aria-expanded="false" aria-controls="nexts{{ state.pk }}">
|
||||
<span class="caret"></span> Customize
|
||||
</button>
|
||||
<h1>
|
||||
Customize Workflow
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }} {{ group.type.name }}</small>
|
||||
</h1>
|
||||
<p class="my-3">
|
||||
Below you can customize the draft states and tags used in the
|
||||
<a href="{{ group.about_url }}">{{ group.acronym }} {{ group.type.name }}</a>
|
||||
. Note that some states are
|
||||
mandatory for group operation and cannot be deactivated.
|
||||
</p>
|
||||
{% if group.type_id == "wg" %}
|
||||
<p>
|
||||
You can see the default Working Group I-D State Diagram
|
||||
in
|
||||
<a href="/doc/html/rfc6174#section-4.1">Section 4.1 of RFC6174</a>
|
||||
.
|
||||
</p>
|
||||
{% endif %}
|
||||
<h2 class="mt-5">States</h2>
|
||||
{% with states|first as state %}
|
||||
<a href="{% url 'ietf.doc.views_help.state_help' type=state.type_id %}"
|
||||
class="btn btn-info my-3">Help on states</a>
|
||||
{% endwith %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="state">State</th>
|
||||
<th data-sort="next">Next states</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for state in states %}
|
||||
<tr class="{% if not state.used %}inactive{% endif %}">
|
||||
<td class="name">
|
||||
<span {% if not state.used %}class="text-decoration-line-through"{% endif %}
|
||||
title="{{ state.desc|striptags|truncatewords:40 }}">
|
||||
{{ state.name }}
|
||||
</span>
|
||||
{% if not state.used %}<span class="text-muted">(not used in {{ group.acronym }})</span>{% endif %}
|
||||
{% if state.mandatory %}<span class="badge bg-success">Mandatory</span>{% endif %}
|
||||
</td>
|
||||
<td class="next-states">
|
||||
{% if state.used_next_states %}
|
||||
{% for n in state.used_next_states %}
|
||||
<span title="{{ n.desc|striptags|truncatewords:40 }}">{{ n.name }}</span>
|
||||
{% if not forloop.last %}<br>{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
<br>
|
||||
<button class="btn btn-primary btn-sm {% if not state.used %}disabled{% endif %}"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#nexts{{ state.pk }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="nexts{{ state.pk }}">
|
||||
Customize <i class="bi bi-caret-down"></i>
|
||||
</button>
|
||||
<form id="nexts{{ state.pk }}"
|
||||
class="mt-2 set-next-states collapse out"
|
||||
method="post">
|
||||
{% csrf_token %}
|
||||
<label>Select the next states:</label>
|
||||
{% for checked, default, s in state.next_states_checkboxes %}
|
||||
<div class="form-check {% if not s.used %}inactive{% endif %}">
|
||||
<input class="form-check-input" type="checkbox" name="next_states" value="{{ s.pk }}" id="value="{{ s.pk }}"" {% if checked %} checked{% endif %}>
|
||||
<label class="form-check-label" for="{{ s.pk }}">
|
||||
{{ s.name }}
|
||||
{% if default %}<span class="badge bg-secondary">Default</span>{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<form id="nexts{{ state.pk }}" class="set-next-states collapse out" method="post">{% csrf_token %}
|
||||
<div>Select the next states:</div>
|
||||
|
||||
{% for checked, default, s in state.next_states_checkboxes %}
|
||||
<div class="checkbox {% if not s.used %}inactive{% endif %}">
|
||||
<label>
|
||||
<input type="checkbox" name="next_states" value="{{ s.pk }}"{% if checked %} checked="checked"{% endif %} />
|
||||
{{ s.name }} {% if default %}<span class="badge bg-secondary">default</span>{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
<input type="hidden" name="state" value="{{ state.pk }}" />
|
||||
<input type="hidden" name="action" value="setnextstates" />
|
||||
<button class="mt-2 btn btn-primary btn-sm" type="submit">Save</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
{% if not state.mandatory %}
|
||||
<form class="set-state text-end" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ state.pk }}" />
|
||||
<input type="hidden" name="action" value="setnextstates" />
|
||||
<button class="btn btn-primary" type="submit">Save</button>
|
||||
<input type="hidden" name="action" value="setstateactive" />
|
||||
<input type="hidden" name="active" value="{{ state.used|yesno:"0,1" }}" />
|
||||
<button class="btn btn-{% if state.used %}danger{% else %}success{% endif %} btn-sm"
|
||||
type="submit"
|
||||
title="Click to {% if state.used %}de{% endif %}activate this state">
|
||||
{% if state.used %}
|
||||
Deactivate
|
||||
{% else %}
|
||||
Activate
|
||||
{% endif %}
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
{% if state.mandatory %}
|
||||
(mandatory)
|
||||
{% else %}
|
||||
<form class="set-state" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ state.pk }}" />
|
||||
<input type="hidden" name="action" value="setstateactive" />
|
||||
<input type="hidden" name="active" value="{{ state.used|yesno:"0,1" }}" />
|
||||
<button class="btn btn-{% if state.used %}danger{% else %}success{% endif %}" type="submit" title="Click to {% if state.used %}de{% endif %}activate this state">{% if state.used %}Deactivate{% else %}Activate{% endif %}</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Tags</h3>
|
||||
|
||||
<table class="table tag-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Tag</th>
|
||||
<th>Turn on/off</th>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for tag in tags %}
|
||||
<tr class="{% if not tag.used %}inactive{% endif %}">
|
||||
<td class="name">{{ tag.name }} {% if not tag.used %} (not used in {{ group.acronym }}){% endif %}</td>
|
||||
<td>
|
||||
<form class="set-tag" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="tag" value="{{ tag.pk }}" />
|
||||
<input type="hidden" name="action" value="settagactive" />
|
||||
<input type="hidden" name="active" value="{{ tag.used|yesno:"0,1" }}" />
|
||||
<button class="btn btn-{% if tag.used %}danger{% else %}success{% endif %}" type="submit" title="Click to {% if tag.used %}de{% endif %}activate this tag">{% if tag.used %}Deactivate{% else %}Activate{% endif %}</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 class="mt-5">Tags</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="tag">Tag</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for tag in tags %}
|
||||
<tr>
|
||||
<td class="name">
|
||||
<span {% if not tag.used %}class="text-decoration-line-through"{% endif %}>{{ tag.name }}</span>
|
||||
{% if not tag.used %}<span class="text-muted">(not used in {{ group.acronym }})</span>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<form class="set-tag text-end" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="tag" value="{{ tag.pk }}" />
|
||||
<input type="hidden" name="action" value="settagactive" />
|
||||
<input type="hidden" name="active" value="{{ tag.used|yesno:"0,1" }}" />
|
||||
<button class="btn btn-{% if tag.used %}danger{% else %}success{% endif %} btn-sm"
|
||||
type="submit"
|
||||
title="Click to {% if tag.used %}de{% endif %}activate this tag">
|
||||
{% if tag.used %}
|
||||
Deactivate
|
||||
{% else %}
|
||||
Activate
|
||||
{% endif %}
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,10 +1,10 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}
|
||||
{% if group %}
|
||||
Edit {{ group.type.name }} {{ group.acronym }}
|
||||
|
@ -12,35 +12,32 @@
|
|||
Start chartering new group
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
{{ form.media.css }}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagehead %}{{ form.media.css }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>
|
||||
{% if action == "edit" %}
|
||||
Edit {{ group.type.name }} {{ group.acronym }}
|
||||
Edit {{ group.type.name }}
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }}</small>
|
||||
{% elif action == "charter" %}
|
||||
Start chartering new group
|
||||
{% else %}
|
||||
Create new group or BOF
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
{% if not request.user.is_authenticated %}
|
||||
<p class="alert alert-info">Note that persons with authorization to manage information, e.g.
|
||||
<p class="alert alert-info">
|
||||
Note that persons with authorization to manage information, e.g.,
|
||||
chairs and delegates, need a datatracker account to actually do
|
||||
so. New accounts can be <a href="{% url "ietf.ietfauth.views.create_account" %}">created here</a>.</p>
|
||||
{% else %}
|
||||
<p></p>
|
||||
so. New accounts can be
|
||||
<a href="{% url "ietf.ietfauth.views.create_account" %}">created here</a>
|
||||
.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<form class="form-horizontal" method="post">
|
||||
<form class="my-3 form-horizontal" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form layout='horizontal' %}
|
||||
|
||||
{% if action == "edit" %}
|
||||
<button class="btn btn-primary" type="submit">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{{ group.about_url }}">Back</a>
|
||||
|
@ -49,11 +46,8 @@
|
|||
{% else %}
|
||||
<button class="btn btn-primary" type="submit">Create group or BOF</button>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
{{ form.media.js }}
|
||||
<script>
|
||||
|
@ -69,4 +63,4 @@
|
|||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -9,7 +11,7 @@
|
|||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ title }}</h1>
|
||||
<form method="post" id="switch-date-use-form">
|
||||
<form class="my-3" method="post" id="switch-date-use-form">
|
||||
<a class="btn btn-primary" href="{{ group.about_url }}">{{ group.acronym }} {{ group.type.name }}</a>
|
||||
{% if group.charter %}
|
||||
<a class="btn btn-primary"
|
||||
|
@ -33,7 +35,7 @@
|
|||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
<p class="form-text my-3">
|
||||
<p class="alert alert-info my-3">
|
||||
{% if forms %}Click a milestone to edit it.{% endif %}
|
||||
{% if forms and not group.uses_milestone_dates %}Drag and drop milestones to reorder them.{% endif %}
|
||||
{% if needs_review %}
|
||||
|
@ -67,19 +69,21 @@
|
|||
{% if form.milestone.resolved %}
|
||||
<span class="badge bg-success">{{ form.milestone.resolved }}</span>
|
||||
{% else %}
|
||||
<b>{% if group.uses_milestone_dates %}{{ form.milestone.due|date:"M Y" }}{% endif %}</b>
|
||||
<b>
|
||||
{% if group.uses_milestone_dates %}{{ form.milestone.due|date:"M Y" }}{% endif %}
|
||||
</b>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-10 col-form-label col-form-label-md">
|
||||
<b>{{ form.milestone.desc }}</b>
|
||||
{% if form.needs_review %}
|
||||
<span title="This milestone is not active yet, awaiting {{ reviewer }} acceptance"
|
||||
class="badge bg-warning">
|
||||
Awaiting accept
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if form.changed %}<span class="badge bg-info">Changed</span>{% endif %}
|
||||
{% if form.delete.data %}<span class="badge bg-danger">Deleted</span>{% endif %}
|
||||
<b>{{ form.milestone.desc }}</b>
|
||||
{% if form.needs_review %}
|
||||
<span title="This milestone is not active yet, awaiting {{ reviewer }} acceptance"
|
||||
class="badge bg-warning">
|
||||
Awaiting accept
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if form.changed %}<span class="badge bg-info">Changed</span>{% endif %}
|
||||
{% if form.delete.data %}<span class="badge bg-danger">Deleted</span>{% endif %}
|
||||
{% for d in form.docs_names %}<div class="doc">{{ d }}</div>{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -92,9 +96,7 @@
|
|||
<div id="extratemplatecontainer" class="visually-hidden">
|
||||
<div class="row extratemplate">
|
||||
<hr>
|
||||
<div class="edit-milestone template">
|
||||
{% include "group/milestone_form.html" with form=empty_form %}
|
||||
</div>
|
||||
<div class="edit-milestone template">{% include "group/milestone_form.html" with form=empty_form %}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row extrabuttoncontainer">
|
||||
|
|
|
@ -1,63 +1,60 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_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" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
|
||||
{% if aliases %}
|
||||
<h2>Email aliases</h2>
|
||||
|
||||
<h2 class="mt-3">Email aliases</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Alias</th>
|
||||
<th>Expansion</th>
|
||||
<th data-sort="alias">Alias</th>
|
||||
<th data-sort="expansion">Expansion</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="mailto:{{ group.acronym }}{{ alias.alias_type|default:''}}@{{ietf_domain}}">
|
||||
{{ group.acronym }}{{ alias.alias_type|default:''}}@{{ietf_domain}}</a></td>
|
||||
<td>{{ alias.expansion }}</td>
|
||||
<a href="mailto:{{ group.acronym }}{{ alias.alias_type|default:'' }}@{{ ietf_domain }}">
|
||||
{{ group.acronym }}{{ alias.alias_type|default:'' }}@{{ ietf_domain }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ alias.expansion|linkify }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<h2>Recipient expansions</h2>
|
||||
|
||||
<h2 class="mt-3">Recipient expansions</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Mail trigger</th>
|
||||
<th>To</th>
|
||||
<th>Cc</th>
|
||||
<th data-sort="mail">Mail trigger</th>
|
||||
<th data-sort="to">To</th>
|
||||
<th data-sort="cc">Cc</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for trigger,desc,to,cc in expansions %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
|
||||
title="{{desc}}">{{trigger}}</a></td>
|
||||
<td> {{to|join:', '}}</td>
|
||||
<td> {{cc|join:', '}}</td>
|
||||
<td>
|
||||
<a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
|
||||
title="{{ desc }}">{{ trigger }}</a>
|
||||
</td>
|
||||
<td>{{ to|join:', '|unescape|linkify }}</td>
|
||||
<td>{{ cc|join:', '|unescape|linkify }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,23 +1,49 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% block morecss %}
|
||||
td.aliasname { white-space:nowrap;}
|
||||
{% load origin textfilters static %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
{% block title %}
|
||||
Group email aliases
|
||||
{% if group %}for {{ group.acronym }}{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Group email aliases{% if group %} for {{group.acronym}}{% endif %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Group email aliases{% if group %} for {{group.acronym}}{% endif %}</h1>
|
||||
<h1>
|
||||
Group email aliases
|
||||
{% if group %}
|
||||
<br>
|
||||
<span class="text-muted">{{ group.acronym }}</span>
|
||||
{% endif %}
|
||||
</h1>
|
||||
{% regroup aliases|dictsort:"acronym" by acronym as alias_list %}
|
||||
<table class="ietf-table">
|
||||
{% for alias in alias_list %}
|
||||
{% cycle 'evenrow' 'oddrow' as alternator silent %}
|
||||
{% for item in alias.list %}
|
||||
<tr class={{alternator}}><td class="aliasname">{{alias.grouper}}{{item.alias_type|default:''}}@{{ietf_domain}}</td><td>{{item.expansion}}</td></tr>
|
||||
<table class="table table-striped table-sm tablesorter my-3">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="Alias">Alias</th>
|
||||
<th data-sort="Expansion">Expansion</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in alias_list %}
|
||||
{% for item in alias.list %}
|
||||
<tr>
|
||||
<td>
|
||||
{% with alias.grouper|add:item.alias_type|default:'' as x %}
|
||||
{% with x|add:"@"|add:ietf_domain as email %}
|
||||
{{ email|linkify }}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
</td>
|
||||
<td>{{ item.expansion|linkify }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,27 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% block title %}Email summary of assigned review requests for {{ group.acronym }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>Email summary of assigned review requests for {{ group.acronym }}</h1>
|
||||
|
||||
<h1>
|
||||
Email summary of assigned review requests
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }}</small>
|
||||
</h1>
|
||||
{% if review_assignments %}
|
||||
<form class="email-open-review-assignments" method="post">{% csrf_token %}
|
||||
<form class="my-3 email-open-review-assignments" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Cancel</a>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="email">Send</button>
|
||||
|
||||
|
||||
<a href="{{ back_url }}" class="btn btn-secondary float-end">Back</a>
|
||||
</form>
|
||||
{% else %}
|
||||
<p>There are currently no open requests.</p>
|
||||
<p>
|
||||
There are currently no open requests.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1 +1,3 @@
|
|||
<p>{{ obj.desc|safe|linebreaksbr }}</p>
|
||||
|
||||
{# bs5ok #}
|
||||
<p>{{ obj.desc|safe|linebreaksbr }}</p>
|
|
@ -1,66 +1,65 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load markup_tags %}
|
||||
{% load textfilters group_filters %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
{% if group.state_id == "conclude" %}
|
||||
<p class="alert alert-warning"><b>Note:</b> The data for concluded {{ group.type.name }}s is occasionally incorrect.</p>
|
||||
<p class="alert alert-warning my-3">
|
||||
<b>Note:</b> The data for concluded {{ group.type.name }}s is occasionally incorrect.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<table class="table table-sm">
|
||||
<thead><tr><th colspan="4"></th></tr></thead>
|
||||
<tbody class="meta">
|
||||
<table class="my-3 table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>{{ group.type.name }}</th>
|
||||
<th>Name</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='name' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='name' %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.name }}</td>
|
||||
<th>{{ group.name }}</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Acronym</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ group.acronym }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
{% if group.parent and group.parent.type_id == "area" %}
|
||||
<th>{{ group.parent.type.name }}</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ group.parent.name }} ({{ group.parent.acronym }})</td>
|
||||
<td>
|
||||
{{ group.parent.name }}
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">({{ group.parent.acronym }})</a>
|
||||
</td>
|
||||
{% else %}
|
||||
<th></th>
|
||||
<td class="edit"></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>State</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='state' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='state' %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ group.state.name }}
|
||||
{% if requested_close %}
|
||||
<div class="badge bg-info">In the process of being closed</div>
|
||||
{% endif %}
|
||||
{% if requested_close %}<div class="badge bg-info">Being closed</div>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if group.features.has_chartering_process %}
|
||||
<tr>
|
||||
<td></td>
|
||||
|
@ -68,10 +67,12 @@
|
|||
<td class="edit"></td>
|
||||
<td>
|
||||
{% if group.charter %}
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=group.charter.name %}">{{ group.charter.name }}-{{ group.charter.rev }}</a>
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=group.charter.name %}">
|
||||
{{ group.charter.name }}-{{ group.charter.rev }}
|
||||
</a>
|
||||
<span class="badge bg-info">{{ group.charter.get_state.name }}</span>
|
||||
{% else %}
|
||||
(None)
|
||||
<span class="text-muted">(None)</span>
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
<a class="btn btn-warning btn-sm" href="{{ charter_submit_url }}">Submit charter</a>
|
||||
{% endif %}
|
||||
|
@ -79,84 +80,113 @@
|
|||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% if can_provide_status_update or status_update %}
|
||||
<tr id='status_update'>
|
||||
<td></td>
|
||||
<th>Status Update</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Status update
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_provide_status_update %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url "ietf.group.views.group_about_status_edit" acronym=group.acronym %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url "ietf.group.views.group_about_status_edit" acronym=group.acronym %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if status_update %}
|
||||
<a href="{% url "ietf.group.views.group_about_status" acronym=group.acronym %}">Show update</a>
|
||||
(last changed {{status_update.time|date:"Y-m-d"}})
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url "ietf.group.views.group_about_status" acronym=group.acronym %}">
|
||||
Show
|
||||
</a>
|
||||
<span class="badge bg-secondary">
|
||||
Changed {{ status_update.time|date:"Y-m-d" }}
|
||||
</span>
|
||||
{% else %}
|
||||
(None)
|
||||
<span class="text-muted">
|
||||
(None)
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% if group.features.has_documents %}
|
||||
<tr id='dependency_graph'>
|
||||
<td></td>
|
||||
<th>Dependencies</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
<a href="{% url 'ietf.group.views.dependencies' group_type=group.type_id acronym=group.acronym output_type='svg' %}">
|
||||
Document dependency graph (SVG)
|
||||
</td>
|
||||
<th>
|
||||
Document dependencies
|
||||
</th>
|
||||
<td class="edit">
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.dependencies' group_type=group.type_id acronym=group.acronym output_type='svg' %}">
|
||||
SVG <i class="bi bi-diagram-3"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% with group.groupextresource_set.all as resources %}
|
||||
{% if resources or can_edit_group %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Additional Resources</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Additional resources
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='resources' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='resources' %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if resources %}
|
||||
<table class="col-md-12 col-sm-12 col-xs-12">
|
||||
<tbody>
|
||||
{% for resource in resources|dictsort:"display_name" %}
|
||||
{% if resource.name.type.slug == 'url' or resource.name.type.slug == 'email' %}
|
||||
<tr><td> - <a href="{{ resource.value }}" title="{{resource.name.name}}">{% firstof resource.display_name resource.name.name %}</a></td></tr>
|
||||
{# Maybe make how a resource displays itself a method on the class so templates aren't doing this switching #}
|
||||
{% else %}
|
||||
<tr><td> - <span title="{{resource.name.name}}">{% firstof resource.display_name resource.name.name %}: {{resource.value}}</span></td></tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% for resource in resources|dictsort:"display_name" %}
|
||||
{% if resource.name.type.slug == 'url' or resource.name.type.slug == 'email' %}
|
||||
<a href="{{ resource.value }}" title="{{ resource.name.name }}">
|
||||
{% firstof resource.display_name resource.name.name %}
|
||||
</a>
|
||||
<br>
|
||||
{# Maybe make how a resource displays itself a method on the class so templates aren't doing this switching #}
|
||||
{% else %}
|
||||
<span title="{{ resource.name.name }}">
|
||||
{% firstof resource.display_name resource.name.name %}: {{ resource.value }}
|
||||
</span>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
</tbody>
|
||||
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
{% for slug, label, roles in group.personnel %}
|
||||
<tr>
|
||||
{% if forloop.first %}
|
||||
<th>Personnel</th>
|
||||
<th>
|
||||
Personnel
|
||||
</th>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td>
|
||||
</td>
|
||||
{% endif %}
|
||||
<th>{{ label }}</th>
|
||||
<th>
|
||||
{{ label }}
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group and slug in editable_roles %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field=slug %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field=slug %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
|
@ -168,97 +198,139 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
{% if group.list_email %}
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Mailing list</th>
|
||||
<th>Address</th>
|
||||
<th>
|
||||
Mailing list
|
||||
</th>
|
||||
<th>
|
||||
Address
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_email' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_email' %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.list_email|linkify }}</td>
|
||||
<td>
|
||||
{{ group.list_email|linkify }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>To subscribe</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
To subscribe
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_subscribe' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_subscribe' %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.list_subscribe|linkify }}</td>
|
||||
<td>
|
||||
{{ group.list_subscribe|linkify }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Archive</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Archive
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_group %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_archive' %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='list_archive' %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ group.list_archive|linkify }}</td>
|
||||
<td>
|
||||
{{ group.list_archive|linkify }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{% endif %}
|
||||
|
||||
{% if group.state_id != "conclude" and group.features.has_default_jabber %}
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Jabber chat</th>
|
||||
<th>Room address</th>
|
||||
<td class="edit"></td>
|
||||
<td><a href="xmpp:{{ group.acronym }}@jabber.ietf.org?join">xmpp:{{ group.acronym }}@jabber.ietf.org?join</a></td>
|
||||
<th>
|
||||
Jabber chat
|
||||
</th>
|
||||
<th>
|
||||
Room address
|
||||
</th>
|
||||
<td class="edit">
|
||||
</td>
|
||||
<td>
|
||||
<a href="xmpp:{{ group.acronym }}@jabber.ietf.org?join">
|
||||
xmpp:{{ group.acronym }}@jabber.ietf.org?join
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Logs</th>
|
||||
<td class="edit"></td>
|
||||
<td><a href="https://jabber.ietf.org/logs/{{ group.acronym }}/">https://jabber.ietf.org/logs/{{ group.acronym }}/</a></td>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Logs
|
||||
</th>
|
||||
<td class="edit">
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://jabber.ietf.org/logs/{{ group.acronym }}/">
|
||||
https://jabber.ietf.org/logs/{{ group.acronym }}/
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
{% if requested_close or group.state_id == "conclude" %}
|
||||
{% if closing_note and closing_note.desc != "(Closing note deleted)" %}
|
||||
<div class="my-3 alert alert-info">
|
||||
<h2>
|
||||
Closing note for {{ group.type.desc.title|default:group.acronym }}
|
||||
</h2>
|
||||
{{ closing_note.desc }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.group.views.edit' acronym=group.acronym field='closing_note' %}">Edit</a>
|
||||
<label>Closing note for {{ group.type.desc.title|default:group.acronym }}:</label>
|
||||
|
||||
{% if closing_note and closing_note.desc != "(Closing note deleted)" %}
|
||||
{{ closing_note.desc }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
|
||||
{% if closing_note and closing_note.desc != "(Closing note deleted)" %}
|
||||
<h2>Closing note for {{ group.type.desc.title }}</h2>
|
||||
{{ closing_note.desc }}
|
||||
|
||||
{% endif %}
|
||||
<a class="btn btn-primary mb-3"
|
||||
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='closing_note' %}">
|
||||
Edit closing note
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if group.features.has_chartering_process %}
|
||||
<h2>Charter for {% if group.state_id == "proposed" %}proposed{% endif %} {{ group.type.desc.title }}</h2>
|
||||
{# the linebreaks filter adds <p/>, no surrounding <p/> necessary: #}
|
||||
<h2 class="mt-3">
|
||||
{% if requested_close or group.state_id == "conclude" %}Final{% endif %}
|
||||
Charter for
|
||||
{% if group.state_id == "proposed" %}proposed{% endif %}
|
||||
{{ group.type.desc.title }}
|
||||
</h2>
|
||||
{# the linebreaks filter adds <p />, no surrounding <p /> necessary: #}
|
||||
{{ group.charter_text|linebreaks }}
|
||||
{% else %}
|
||||
<h2>About</h2>
|
||||
<h2 class="mt-3">
|
||||
{% if requested_close or group.state_id == "conclude" %}Final{% endif %}
|
||||
Group description
|
||||
</h2>
|
||||
{% comment %}{{ group.description|default:"No description yet."|linebreaks }}{% endcomment %}
|
||||
{{ group.description|default:"No description yet."| apply_markup:"restructuredtext" }}
|
||||
{% endif %}
|
||||
|
||||
{% if group.features.has_milestones %}
|
||||
|
||||
{% include "group/milestones.html" with milestones=group.milestones %}
|
||||
|
||||
{% if milestones_in_review %}
|
||||
<p>{{ milestones_in_review|length }} new milestone{{ milestones_in_review|pluralize }}
|
||||
currently in {{ milestone_reviewer }} review.</p>
|
||||
<p>
|
||||
{{ milestones_in_review|length }} new milestone{{ milestones_in_review|pluralize }}
|
||||
currently in {{ milestone_reviewer }} review.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,52 +1,48 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block morecss %}
|
||||
.leftpanel { border-right: 1px solid #ccc;}
|
||||
.header {text-align:center; background-color:#aaf; }
|
||||
.buttonrow {text-align:center; border-bottom: 1px solid #000;}
|
||||
{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% if charter %}
|
||||
{% comment %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 header leftpanel">Current about page rendering</div>
|
||||
<div class="col-md-6 header">Markdown rendering</div>
|
||||
<div class="col-md-6 h2 text-center bg-info border-end">Current about page rendering</div>
|
||||
<div class="col-md-6 h2 text-center bg-info">Markdown rendering</div>
|
||||
</div>
|
||||
<div class="row buttonrow">
|
||||
<div class="col-md-6 leftpanel"> </div>
|
||||
<div class="row border-bottom text-center">
|
||||
<div class="col-md-6 border-end"> </div>
|
||||
<div class="col-md-6 "><input type="checkbox" name="widthconstraint"> Constrain width</input></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 leftpanel">{{charter|linebreaks}}</div>
|
||||
<div class="col-md-6 border-end">{{charter|linebreaks}}</div>
|
||||
<div class="col-md-6 rightcontent">{{rendered|sanitize|safe}}</div>
|
||||
</div>
|
||||
{% endcomment %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 leftpanel">
|
||||
<div class="header">Current about page rendering</div>
|
||||
<div class="buttonrow"> </div>
|
||||
<div>{{charter|linebreaks}}</div>
|
||||
<div class="my-3 row">
|
||||
<div class="col-md-6 border-end">
|
||||
<div class="h2 text-center bg-info">Current about page rendering</div>
|
||||
<div class="border-bottom text-center"> </div>
|
||||
<div>{{ charter|linebreaks }}</div>
|
||||
</div>
|
||||
<div class="col-md-6 rightpanel">
|
||||
<div class="header">Markdown rendering</div>
|
||||
<div class="buttonrow"><input type="checkbox" name="widthconstraint"> Constrain width</input></div>
|
||||
<div class="rightcontent">{{rendered|sanitize|safe}}</div>
|
||||
<div class="h2 text-center bg-info">Markdown rendering</div>
|
||||
<div class="border-bottom text-center">
|
||||
<input type="checkbox" name="widthconstraint">
|
||||
Constrain width
|
||||
</input>
|
||||
</div>
|
||||
<div class="rightcontent">{{ rendered|sanitize|safe }}</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div>Group has no charter document</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div>Group has no charter document</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('input[name=widthconstraint]').change(function() {
|
||||
$('input[name=widthconstraint]').trigger("change", function() {
|
||||
if ($(this).is(':checked')) {
|
||||
$('.rightcontent').css('max-width','700px')
|
||||
} else {
|
||||
|
@ -57,4 +53,4 @@
|
|||
$('.rightcontent').css('max-width','700px')
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,3 +1,4 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -5,26 +6,38 @@
|
|||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
|
||||
{% block title %}
|
||||
Status update for {{ group.type.name }} {{ group.acronym }}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Status update for {{ group.acronym }} {{ group.type.name }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>
|
||||
Status update for {{ group.type.name }} {{ group.acronym }}
|
||||
Status update for {{ group.type.name }}
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }}</small>
|
||||
</h1>
|
||||
|
||||
<pre class="pasted">{{ status_update.desc|default:"(none)"|linkify }}</pre>
|
||||
|
||||
{% if can_provide_status_update %}
|
||||
<a id="edit_button" class="btn btn-primary" href="{% url "ietf.group.views.group_about_status_edit" acronym=group.acronym %}">Edit</a>
|
||||
<div class="my-3 alert alert-info">
|
||||
<h2>About Status Updates</h2>
|
||||
<p>
|
||||
Capturing group status updates in the datatracker allows including them in meeting proceedings. This capability was added to address the IESG request at
|
||||
<a href="https://trac.ietf.org/trac/ietfdb/ticket/1773">ticket 1773</a>
|
||||
. Not all groups are expected to provide status updates. Those that do have historically sent messages by email or have placed them on a wiki. For example, see
|
||||
<a href="https://mailarchive.ietf.org/arch/msg/saag/fo2b3KA47SM4MuQuYj5VIh-Tjok">
|
||||
the Kitten report sent to SAAG for IETF94
|
||||
</a>
|
||||
or the
|
||||
<a href="https://trac.ietf.org/trac/rtg/wiki/IETF94summary">Routing area high level summaries for IETF94</a>
|
||||
.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.group.views.group_about" acronym=group.acronym %}">Back</a>
|
||||
|
||||
<pre class="border p-3 my-3 pasted">{{ status_update.desc|default:"(none)"|linkify }}</pre>
|
||||
{% if can_provide_status_update %}
|
||||
<h2>About Status Updates</h2>
|
||||
<p>Capturing group status updates in the datatracker allows including them in meeting proceedings. This capability was added to address the IESG request at <a href="https://trac.ietf.org/trac/ietfdb/ticket/1773">ticket 1773</a>. Not all groups are expected to provide status updates. Those that do have historically sent messages by email or have placed them on a wiki. For example, see <a href="https://mailarchive.ietf.org/arch/msg/saag/fo2b3KA47SM4MuQuYj5VIh-Tjok">the Kitten report sent to SAAG for IETF94</a> or the <a href="https://trac.ietf.org/trac/rtg/wiki/IETF94summary">Routing area high level summaries for IETF94</a>.</p>
|
||||
<a id="edit_button"
|
||||
class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.group_about_status_edit" acronym=group.acronym %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.group.views.group_about" acronym=group.acronym %}">Back</a>
|
||||
{% endblock %}
|
|
@ -1,34 +1,38 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}
|
||||
Edit status for {{ group.type.name }} ({{group.acronym}})
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Edit status for {{ group.type.name }} ({{ group.acronym }}){% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>
|
||||
Edit status for {{ group.type.name }} ({{group.acronym}})
|
||||
Edit status update for {{ group.type.name }}
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }}</small>
|
||||
</h1>
|
||||
|
||||
<div class="my-3 alert alert-info">
|
||||
<h2>About Status Updates</h2>
|
||||
<p>
|
||||
Capturing group status updates in the datatracker allows including them in meeting proceedings. This capability was added to address the IESG request at
|
||||
<a href="https://trac.ietf.org/trac/ietfdb/ticket/1773">ticket 1773</a>
|
||||
. Not all groups are expected to provide status updates. Those that do have historically sent messages by email or have placed them on a wiki. For example, see
|
||||
<a href="https://mailarchive.ietf.org/arch/msg/saag/fo2b3KA47SM4MuQuYj5VIh-Tjok">
|
||||
the Kitten report sent to SAAG for IETF94
|
||||
</a>
|
||||
or the
|
||||
<a href="https://trac.ietf.org/trac/rtg/wiki/IETF94summary">Routing area high level summaries for IETF94</a>
|
||||
.
|
||||
</p>
|
||||
</div>
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="submit_response" value="Submit">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.group.views.group_about" acronym=group.acronym %}">Back</a>
|
||||
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
name="submit_response"
|
||||
value="Submit">Submit</button>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.group.views.group_about" acronym=group.acronym %}">Back</a>
|
||||
</form>
|
||||
|
||||
<h2>About Status Updates</h2>
|
||||
<p>Capturing group status updates in the datatracker allows including them in meeting proceedings. This capability was
|
||||
added to address the IESG request at <a href="https://trac.ietf.org/tools/ietfdb/ticket/1773">ticket 1773</a>.
|
||||
Not all groups are expected to provide status updates. Those that do have historically sent messages by email or have placed them on a wiki. For example, see <a href="https://mailarchive.ietf.org/arch/msg/saag/fo2b3KA47SM4MuQuYj5VIh-Tjok">the Kitten report sent to SAAG for IETF94</a> or the <a href="https://trac.ietf.org/trac/rtg/wiki/IETF94summary">Routing area high level summaries for IETF94</a>.</p>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,3 +1,4 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -5,19 +6,11 @@
|
|||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
|
||||
{% block title %}
|
||||
Status update for {{ group.type.name }} {{ group.acronym }} at {{meeting}}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Status update for {{ group.type.name }} {{ group.acronym }} at {{ meeting }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>
|
||||
Status update for {{ group.type.name }} {{ group.acronym }} at {{meeting}}
|
||||
</h1>
|
||||
|
||||
<pre class="pasted">{{ status_update.desc|default:"(none)"|linkify }}</pre>
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.meeting.views.proceedings" num=meeting.number %}">Back</a>
|
||||
|
||||
{% endblock %}
|
||||
<h1>Status update for {{ group.type.name }} {{ group.acronym }} at {{ meeting }}</h1>
|
||||
<pre class="border p-3 my-3 pasted">{{ status_update.desc|default:"(none)"|linkify }}</pre>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.meeting.views.proceedings" num=meeting.number %}">Back</a>
|
||||
{% endblock %}
|
|
@ -1,53 +1,44 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load ietf_filters static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ group.name }} ({{ group.acronym }}) - {% block group_subtitle %}{% endblock %}{% endblock %}
|
||||
|
||||
{% block title %}{{ group.name }} ({{ group.acronym }}){% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>{{ group.name}} ({{ group.acronym }})
|
||||
<h1>
|
||||
{{ group.name }} ({{ group.acronym }})
|
||||
{% if group.state_id == "dormant" or group.state_id == "conclude" %}
|
||||
<span class="badge bg-warning">Concluded {{ group.type.name }}</span>
|
||||
{% endif %}
|
||||
{% if group.state_id == "replaced" %}
|
||||
<span class="badge bg-warning">Replaced {{ group.type.name }}</span>
|
||||
{% endif %}
|
||||
{% if group.state_id == "proposed" %}
|
||||
<span class="badge bg-info">Proposed {{ group.type.name }}</span>
|
||||
{% endif %}
|
||||
{% if group.state_id == "replaced" %}<span class="badge bg-warning">Replaced {{ group.type.name }}</span>{% endif %}
|
||||
{% if group.state_id == "proposed" %}<span class="badge bg-info">Proposed {{ group.type.name }}</span>{% endif %}
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<ul class="nav nav-tabs my-3">
|
||||
{% for name, url in menu_entries %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if selected_menu_entry == name.lower %}active{% endif %}" href="{{ url }}">{{ name }}</a>
|
||||
<a class="nav-link {% if selected_menu_entry == name.lower %}active{% endif %}"
|
||||
href="{{ url }}">{{ name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="buttonlist">
|
||||
{% block buttonlist %}
|
||||
{% if menu_actions %}
|
||||
{% for name, url in menu_actions %}
|
||||
<a class="btn {% if name == "Request closing group" %}btn-warning{% else %}btn-primary{% endif %}" href="{{ url }}">{{ name }}</a>
|
||||
<a class="btn {% if name == "Request closing group" %}btn-warning{% else %}btn-primary{% endif %}"
|
||||
href="{{ url }}">
|
||||
{{ name }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
{% block group_content %}
|
||||
{% endblock %}
|
||||
|
||||
{% block group_content %}{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,9 +1,8 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% block group_subtitle %}Documents{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
{% if docs_related %}
|
||||
|
@ -13,5 +12,4 @@
|
|||
{% endif %}
|
||||
{% include "doc/search/search_results.html" with docs=docs_related meta=meta_related skip_no_matches_warning=True start_table=False end_table=True %}
|
||||
{% include "community/list_menu.html" %}
|
||||
|
||||
{% endblock %}
|
|
@ -1,63 +1,24 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% block morecss %}
|
||||
.well { max-width: 150px;}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ group }} ({{group.acronym}}) Photos{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
{% block title %}{{ group }} ({{ group.acronym }}) photos{% endblock %}
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<h1>{{ group }} ({{group.acronym}}) Photos</h1>
|
||||
|
||||
<h2 class="my-3">{{ group }} ({{ group.acronym }}) photos</h2>
|
||||
{% regroup roles by name as role_groups %}
|
||||
<div class="col-md-10">
|
||||
{% for role_name in role_groups %}
|
||||
<div class="row" id="{{role_name.grouper|urlencode}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{role_name.grouper}}{{role_name.list|pluralize}}</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-inline">
|
||||
{% regroup role_name.list by person as person_groups %}
|
||||
{% for person_with_groups in person_groups %}
|
||||
<li class="list-inline-item">
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=person_with_groups.grouper.name %}">
|
||||
<div class="well photo-thumbnail">
|
||||
<div>
|
||||
{% if person_with_groups.grouper.photo_thumb %}
|
||||
<img width=100 src="{{person_with_groups.grouper.photo_thumb.url}}" alt="Photo of {{person_with_groups.grouper.name}}" />
|
||||
{% elif person_with_groups.grouper.photo %}
|
||||
<img width=100 src="{{person_with_groups.grouper.photo.url}}" alt="Photo of {{person_with_groups.grouper.name}}" />
|
||||
{% else %}
|
||||
<img width=100 src="{{ MEDIA_URL }}photo/nopictureavailable.jpg" alt="No picture available"/>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div >
|
||||
<strong>{{person_with_groups.grouper.plain_name}}</strong>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% for role_name in role_groups %}
|
||||
<div class="row" id="{{ role_name.grouper|urlencode }}">
|
||||
<h3 class="mt-4">{{ role_name.grouper }}{{ role_name.list|pluralize }}</h3>
|
||||
{% regroup role_name.list by person as person_groups %}
|
||||
<div class="mt-0 row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-2 row-cols-xl-3 row-cols-xxl-3 g-3">
|
||||
{% for person_with_groups in person_groups %}
|
||||
<div class="col">
|
||||
{% include "person/photo.html" with person=person_with_groups.grouper groups=person_with_groups.list %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-1 d-print-none" id="affix">
|
||||
<ul class="nav nav-pills nav-stacked small fixed" data-bs-spy="affix">
|
||||
{% for role_name in role_groups %}
|
||||
<li><a href="#{{role_name.grouper|urlencode}}">{{role_name.grouper}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -1,18 +1,21 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load ietf_filters person_filters textfilters %}
|
||||
{% load static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
<h2>Group History</h2>
|
||||
<h2 class="my-3">Group history</h2>
|
||||
{% if can_add_comment %}
|
||||
<a class="btn btn-primary" href="{% url 'ietf.group.views.add_comment' acronym=group.acronym %}"><span class="bi bi-plus"></span> Add comment</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.group.views.add_comment' acronym=group.acronym %}">
|
||||
<span class="bi bi-plus"></span>
|
||||
Add comment
|
||||
</a>
|
||||
{% endif %}
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
|
@ -26,14 +29,13 @@
|
|||
{% for e in events %}
|
||||
<tr>
|
||||
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
|
||||
<td class="text-nowrap">{{ e.by.plain_name }}</td>
|
||||
<td class="text-nowrap">{% person_link e.by %}</td>
|
||||
<td>{{ e.desc|format_history_text }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,35 +1,32 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
|
||||
{% load origin static person_filters %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Other RFC streams{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Other RFC streams</h1>
|
||||
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<table class="my-3 table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<th>Stream</th>
|
||||
<th>Owner</th>
|
||||
<th>Stream manager</th>
|
||||
<th data-sort="stream">Stream</th>
|
||||
<th data-sort="owner">Owner</th>
|
||||
<th data-sort="manager">Stream manager</th>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for stream in streams %}
|
||||
<tr>
|
||||
<td class="text-nowrap"><a href="/stream/{{stream.acronym}}/">{{ stream.acronym }}</a></td>
|
||||
<td class="text-nowrap">
|
||||
<a href="/stream/{{ stream.acronym }}/">{{ stream.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ stream.name }}</td>
|
||||
<td>
|
||||
{% with stream.get_chair as role %}
|
||||
<a href="mailto:{{role.person.email_address}}">{{role.person}}</a>
|
||||
({{role.name}})
|
||||
{% person_link role.person %}
|
||||
<span class="badge bg-info">{{ role.name }}</span>
|
||||
{% endwith %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -37,7 +34,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,194 +1,240 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 person_filters textfilters %}
|
||||
{% block title %}Manage open review requests for {{ group.acronym }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>Manage {{ assignment_status }} open review requests for {{ group.acronym }}</h1>
|
||||
|
||||
<h1>
|
||||
Manage {{ assignment_status }} open review requests
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }}</small>
|
||||
</h1>
|
||||
{% if newly_closed > 0 or newly_opened > 0 or newly_assigned > 0 %}
|
||||
<p class="alert alert-danger">
|
||||
<p class="my-3 alert alert-danger">
|
||||
Changes since last refresh:
|
||||
{% if newly_closed %}{{ newly_closed }} request{{ newly_closed|pluralize }} closed.{% endif %}
|
||||
{% if newly_opened %}{{ newly_opened }} request{{ newly_opened|pluralize }} opened.{% endif %}
|
||||
{% if newly_assigned %}{{ newly_assigned }} request{{ newly_assigned|pluralize }} changed assignment.{% endif %}
|
||||
|
||||
{% if saving %}
|
||||
Check that you are happy with the results, then re-save.
|
||||
{% endif %}
|
||||
{% if saving %}Check that you are happy with the results, then re-save.{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if review_requests %}
|
||||
<form class="review-requests" method="post">{% csrf_token %}
|
||||
|
||||
<form class="review-requests" method="post">
|
||||
{% csrf_token %}
|
||||
{% for r in review_requests %}
|
||||
<div class="card review-request">
|
||||
<div class="my-3 card review-request">
|
||||
<div class="card-header">
|
||||
|
||||
<h5 class="card-title">
|
||||
<span class="float-end">
|
||||
{% if r.in_lc_and_telechat %}Last Call and telechat{% else %}{{ r.type.name }}{% endif %}
|
||||
- deadline {{ r.deadline|date:"Y-m-d" }}
|
||||
{% if r.due %}<span class="badge bg-warning">{{ r.due }} day{{ r.due|pluralize }}</span>{% endif %}
|
||||
</span>
|
||||
|
||||
<a href="{% if r.requested_rev %}{% url "ietf.doc.views_doc.document_main" name=r.doc.name rev=r.requested_rev %}{% else %}{% url "ietf.doc.views_doc.document_main" name=r.doc.name %}{% endif %}?include_text=1">{{ r.doc.name }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %}</a>
|
||||
</h5>
|
||||
<span class="float-end">
|
||||
{% if r.in_lc_and_telechat %}
|
||||
Last Call and telechat
|
||||
{% else %}
|
||||
{{ r.type.name }}
|
||||
{% endif %}
|
||||
deadline {{ r.deadline|date:"Y-m-d" }}
|
||||
{% if r.due %}<span class="badge bg-warning">{{ r.due }} day{{ r.due|pluralize }}</span>{% endif %}
|
||||
</span>
|
||||
<a href="{% if r.requested_rev %}{% url "ietf.doc.views_doc.document_main" name=r.doc.name rev=r.requested_rev %}{% else %}{% url "ietf.doc.views_doc.document_main" name=r.doc.name %}{% endif %}?include_text=1">
|
||||
{{ r.doc.name }}-
|
||||
{% if r.requested_rev %}
|
||||
{{ r.requested_rev }}
|
||||
{% else %}
|
||||
{{ r.doc.rev }}
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="row request-metadata">
|
||||
<div class="col-sm-6">
|
||||
<div class="request-metadata">
|
||||
<p>
|
||||
{% if r.pk != None %}Requested: <a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">{{ r.time|date:"Y-m-d" }}{% if r.requested_by %} by {{r.requested_by.plain_name}}{% endif %}</a>
|
||||
{% else %}
|
||||
Auto-suggested
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if r.doc.authors %}Authors: {{ r.doc.authors|join:", " }}{% endif %}
|
||||
<br>
|
||||
{% if r.wg_chairs %}WG chairs: {{ r.wg_chairs|join:", " }}{% endif %}
|
||||
</p>
|
||||
|
||||
{% if r.latest_reqs %}
|
||||
{% for rlatest in r.latest_reqs %}
|
||||
{% for alatest in rlatest.reviewassignment_set.all %}
|
||||
<div>
|
||||
{% if alatest.reviewed_rev %}
|
||||
Previous review of
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=rlatest.doc.name rev=alatest.reviewed_rev %}?include_text=1">{% if rlatest.doc.name != r.doc.name %}{{ rlatest.doc.name }}{% endif %}-{{ alatest.reviewed_rev }}</a>{% if alatest.reviewed_rev != r.doc.rev %}
|
||||
(<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ alatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">diff</a>){% endif %}:
|
||||
<a href="{{ alatest.review.get_absolute_url }}">{% if alatest.result %}{{ alatest.result.name }}{% else %}result unavail.{% endif %}</a>
|
||||
by {{ alatest.reviewer.person }}{% if alatest.closed_review_request_event %} {{ alatest.closed_review_request_event.time.date|date }}{% endif %}
|
||||
{% else %}
|
||||
Previous review of
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=rlatest.doc.name %}?include_text=1">{% if rlatest.doc.name != r.doc.name %}{{ rlatest.doc.name }}{% else %}this document{% endif %}</a>:
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=rlatest.doc.name request_id=rlatest.pk %}">{% if alatest.result %}{{ alatest.result.name }}{% else %}result unavail.{% endif %}</a>
|
||||
by {{ alatest.reviewer.person }}{% if alatest.closed_review_request_event %} {{ alatest.closed_review_request_event.time.date|date }}{% endif %}
|
||||
<p class="lead">
|
||||
{{ r.doc.title|linkify|urlize_ietf_docs }}
|
||||
</p>
|
||||
{% if r.pk != None %}
|
||||
<span class="fw-bold">Requested:</span>
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">
|
||||
{{ r.time|date:"Y-m-d" }}
|
||||
</a>
|
||||
{% if r.requested_by %}
|
||||
by {% person_link r.requested_by %}
|
||||
{% endif %}
|
||||
<br>
|
||||
{% else %}
|
||||
<span class="badge bg-info">Auto-suggested</span>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if r.doc.authors %}
|
||||
<span class="fw-bold">Authors:</span>
|
||||
{% for person in r.doc.authors %}
|
||||
{% person_link person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if r.doc.group.type_id != "individ" %}
|
||||
<span class="fw-bold">{{ r.doc.group.type.name }}:</span>
|
||||
<a href="{% url "ietf.group.views.group_home" acronym=r.doc.group.acronym group_type=r.doc.group.type_id %}">
|
||||
{{ r.doc.group.acronym }}
|
||||
</a>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if r.wg_chairs %}
|
||||
<span class="fw-bold">{{ r.doc.group.type.name }} chairs:</span>
|
||||
{% for person in r.wg_chairs %}
|
||||
{% person_link person %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if r.latest_reqs %}
|
||||
{% for rlatest in r.latest_reqs %}
|
||||
{% for alatest in rlatest.reviewassignment_set.all %}
|
||||
<div>
|
||||
{% if alatest.reviewed_rev %}
|
||||
Previous review of
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=rlatest.doc.name rev=alatest.reviewed_rev %}?include_text=1">
|
||||
{% if rlatest.doc.name != r.doc.name %}{{ rlatest.doc.name }}{% endif %}
|
||||
-{{ alatest.reviewed_rev }}
|
||||
</a>
|
||||
{% if alatest.reviewed_rev != r.doc.rev %}
|
||||
(
|
||||
<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ alatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">
|
||||
diff
|
||||
</a>
|
||||
)
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
:
|
||||
<a href="{{ alatest.review.get_absolute_url }}">
|
||||
{% if alatest.result %}
|
||||
{{ alatest.result.name }}
|
||||
{% else %}
|
||||
result unavail.
|
||||
{% endif %}
|
||||
</a>
|
||||
by {% person_link alatest.reviewer.person %}
|
||||
{% if alatest.closed_review_request_event %}{{ alatest.closed_review_request_event.time.date|date }}{% endif %}
|
||||
{% else %}
|
||||
Previous review of
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=rlatest.doc.name %}?include_text=1">
|
||||
{% if rlatest.doc.name != r.doc.name %}
|
||||
{{ rlatest.doc.name }}
|
||||
{% else %}
|
||||
this document
|
||||
{% endif %}
|
||||
</a>
|
||||
:
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=rlatest.doc.name request_id=rlatest.pk %}">
|
||||
{% if alatest.result %}
|
||||
{{ alatest.result.name }}
|
||||
{% else %}
|
||||
result unavail.
|
||||
{% endif %}
|
||||
</a>
|
||||
by {% person_link alatest.reviewer.person %}
|
||||
{% if alatest.closed_review_request_event %}{{ alatest.closed_review_request_event.time.date|date }}{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div><strong>{{ r.doc.title }}</strong></div>
|
||||
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div>
|
||||
{{ r.doc.pages }} page{{ r.doc.pages|pluralize }}
|
||||
- {{ r.doc.friendly_state }}
|
||||
{% if r.doc.telechat_date %}
|
||||
- IESG telechat: {{ r.doc.telechat_date }}
|
||||
{% endif %}
|
||||
{% if r.doc.group.type_id != "individ" %}
|
||||
- <a href="{% url "ietf.group.views.group_home" acronym=r.doc.group.acronym group_type=r.doc.group.type_id %}">{{ r.doc.group.acronym }} {{ r.doc.group.type.name }}</a>
|
||||
{% endif %}
|
||||
<span class="badge bg-secondary">{{ r.doc.pages }} page{{ r.doc.pages|pluralize }}</span>
|
||||
<span class="badge bg-info">{{ r.doc.friendly_state }}</span>
|
||||
</div>
|
||||
{% if r.comment %}
|
||||
<div><pre class="pasted">{{ r.comment }}</pre></div>
|
||||
{% if r.doc.telechat_date %}<span class="badge bg-warning">IESG telechat: {{ r.doc.telechat_date }}</span>{% endif %}
|
||||
{% if r.comment %}<pre class="border p-3 pasted">{{ r.comment }}</pre>{% endif %}
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<span class="fw-bold">Abstract:</span>
|
||||
{{ r.doc.abstract|linkify|urlize_ietf_docs }}
|
||||
</div>
|
||||
{% if r.form.non_field_errors %}
|
||||
<div class="alert alert-danger">
|
||||
{% for e in r.form.non_field_errors %}{{ e }}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<input type="hidden" name="reviewrequest" value="{{ r.pk }}">
|
||||
<input type="hidden"
|
||||
name="{{ r.form.prefix }}-existing_reviewer"
|
||||
value="{{ r.reviewer_id|default:"" }}">
|
||||
<div class="assign-action">
|
||||
{% if r.reviewer %}
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-primary btn-success"
|
||||
title="Click to reassign reviewer">
|
||||
{% person_link r.reviewer.person %}
|
||||
</button>
|
||||
{% if r.state_id == "accepted" %}<span class="badge bg-secondary">Accepted</span>{% endif %}
|
||||
{% if r.reviewer_unavailable %}<span class="badge bg-danger">Unavailable</span>{% endif %}
|
||||
{% else %}
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-primary btn-success"
|
||||
title="Click to assign reviewer">
|
||||
Assign reviewer
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 abstract">
|
||||
{{ r.doc.abstract|linebreaks }}
|
||||
{% bootstrap_field r.form.action layout="horizontal" size="sm" %}
|
||||
<div class="reviewer-controls">
|
||||
{% if r.form.review_type %}
|
||||
{% bootstrap_field r.form.review_type layout="horizontal" size="sm" %}
|
||||
{% endif %}
|
||||
{% bootstrap_field r.form.reviewer layout="horizontal" size="sm" %}
|
||||
{% bootstrap_field r.form.add_skip layout="horizontal" size="sm" %}
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-primary undo"
|
||||
title="Cancel assignment"
|
||||
data-initial="{{ r.form.fields.reviewer.initial|default:"" }}">
|
||||
Cancel
|
||||
</button>
|
||||
{% if r.form.reviewer.errors or r.form.add_skip.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{% for e in r.form.reviewer.errors %}{{ e }}{% endfor %}
|
||||
{% for e in r.form.add_skip.errors %}{{ e }}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="close-action">
|
||||
<button type="button" class="btn btn-sm btn-primary btn-danger">Close</button>
|
||||
{% if r.doc.past_telechat_date %}(was on {{ r.doc.past_telechat_date }} telechat){% endif %}
|
||||
</div>
|
||||
<div class="close-controls">
|
||||
{% bootstrap_field r.form.close layout="horizontal" size="sm" %}
|
||||
{% bootstrap_field r.form.close_comment layout="horizontal" size="sm" %}
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-primary undo"
|
||||
title="Cancel closing">Cancel</button>
|
||||
{% if r.form.close.errors %}
|
||||
{% bootstrap_field r.form.close.errors layout="horizontal" size="sm" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{% if r.form.non_field_errors %}
|
||||
<div class="alert alert-danger">
|
||||
{% for e in r.form.non_field_errors %}
|
||||
{{ e }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<input type="hidden" name="reviewrequest" value="{{ r.pk }}">
|
||||
<input type="hidden" name="{{ r.form.prefix }}-existing_reviewer" value="{{ r.reviewer_id|default:"" }}">
|
||||
|
||||
<span class="assign-action">
|
||||
{% if r.reviewer %}
|
||||
<button type="button" class="btn btn-primary btn-success" title="Click to reassign reviewer">
|
||||
{{ r.reviewer.person }}
|
||||
{% if r.state_id == "accepted" %} <span class="badge bg-secondary">accepted</span>{% endif %}
|
||||
{% if r.reviewer_unavailable %}<span class="badge bg-danger">unavailable</span>{% endif %}
|
||||
</button>
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary btn-success" title="Click to assign reviewer"><em>Not yet assigned</em></button>
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
{{ r.form.action }}
|
||||
|
||||
<span class="reviewer-controls form-inline">
|
||||
{% if r.form.review_type %}
|
||||
<label for="{{ r.form.review_type.id_for_label }}">Review Type:</label>
|
||||
{{ r.form.review_type }}
|
||||
{% endif %}
|
||||
<label for="{{ r.form.reviewer.id_for_label }}">Assign:</label>
|
||||
{{ r.form.reviewer }}
|
||||
{{ r.form.add_skip }} <label for="{{ r.form.add_skip.id_for_label }}">Skip next time</label>
|
||||
<button type="button" class="btn btn-primary undo" title="Cancel assignment" data-initial="{{ r.form.fields.reviewer.initial|default:"" }}">Cancel</button>
|
||||
{% if r.form.reviewer.errors or r.form.add_skip.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{% for e in r.form.reviewer.errors %}
|
||||
{{ e }}
|
||||
{% endfor %}
|
||||
{% for e in r.form.add_skip.errors %}
|
||||
{{ e }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
<span class="close-action">
|
||||
<button type="button" class="btn btn-primary btn-danger">Close...</button>
|
||||
{% if r.doc.past_telechat_date %} (was on {{r.doc.past_telechat_date}} telechat) {% endif %}
|
||||
</span>
|
||||
|
||||
<span class="close-controls form-inline">
|
||||
<label for="{{ r.form.reviewer.id_for_label }}">Close:</label>
|
||||
{{ r.form.close }}
|
||||
<label for="{{ r.form.reviewer.id_for_close_comment }}">Optional comment:</label>
|
||||
{{ r.form.close_comment }}
|
||||
<button type="button" class="btn btn-primary undo" title="Cancel closing">Cancel</button>
|
||||
{% if r.form.close.errors %}
|
||||
<br>
|
||||
{{ r.form.close.errors }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
<a href="{% url "ietf.group.views.review_requests" group_type=group.type_id acronym=group.acronym %}" class="btn btn-secondary float-end">Cancel</a>
|
||||
<a href="{% url "ietf.group.views.review_requests" group_type=group.type_id acronym=group.acronym %}"
|
||||
class="btn btn-secondary float-end">
|
||||
Back
|
||||
</a>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="save">Save changes</button>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="save-continue">Save and continue editing</button>
|
||||
<button class="btn btn-primary"
|
||||
type="submit"
|
||||
name="action"
|
||||
value="save-continue">Save and continue editing</button>
|
||||
<button class="btn btn-primary" type="submit" name="action" value="refresh">Refresh (keeping changes)</button>
|
||||
|
||||
|
||||
</form>
|
||||
{% else %}
|
||||
<p>There are currently no {{ assignment_status }} open requests.</p>
|
||||
<p>
|
||||
There are currently no {{ assignment_status }} open requests.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
<script src="{% static "ietf/js/manage-review-requests.js" %}"></script>
|
||||
<script src="{% static "ietf/js/manage-review-requests.js" %}">
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,69 +1,66 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block group_subtitle %}Materials{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% if doc_types %}
|
||||
{% for doc_type, docs in doc_types %}
|
||||
<h2>{{ doc_type.name }}</h2>
|
||||
|
||||
<h2 class="mt-3">{{ doc_type.name }}</h2>
|
||||
<table class="table table-sm table-striped materials tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Title</th>
|
||||
<th>Abstract</th>
|
||||
<th>Curr. rev.</th>
|
||||
<th>Date</th>
|
||||
<th>Last presented</th>
|
||||
<th>On agenda</th>
|
||||
<th data-sort="title">Title</th>
|
||||
<th data-sort="abstract">Abstract</th>
|
||||
<th data-sort="num">Curr. rev.</th>
|
||||
<th data-sort="date">Date</th>
|
||||
<th data-sort="last">Last presented</th>
|
||||
<th data-sort="on">On agenda</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for d in docs %}
|
||||
<tr>
|
||||
<td><a class="title-link" href="{% url "ietf.doc.views_doc.document_main" name=d.name %}">{{ d.title }}</a></td>
|
||||
<td class='snippable'>{{ d.abstract|format_snippet }} </td>
|
||||
<td>
|
||||
<a class="title-link"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=d.name %}">{{ d.title }}</a>
|
||||
</td>
|
||||
<td class='snippable'>{{ d.abstract|urlize_ietf_docs|format_snippet }}</td>
|
||||
<td>{{ d.rev }}</td>
|
||||
<td>{{ d.time|date:"Y-m-d" }}</td>
|
||||
<td>{% regroup d.last_presented by session.meeting as past_pres_list %}
|
||||
<td>
|
||||
{% regroup d.last_presented by session.meeting as past_pres_list %}
|
||||
{% for p in past_pres_list %}
|
||||
{{ p.grouper }}
|
||||
{% if p.list|length > 1 %}
|
||||
({{ p.list|length }} sessions)
|
||||
<span class="badge bg-info">{{ p.list|length }} sessions</span>
|
||||
{% else %}
|
||||
{% for pr in p.list %}
|
||||
{% if pr.rev != d.rev %}
|
||||
(-{{ pr.rev }})
|
||||
{% endif %}
|
||||
{% if pr.rev != d.rev %}(-{{ pr.rev }}){% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if not forloop.last %}, {% endif %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>{% regroup d.future_presentations by session.meeting as meeting_pres_list %}
|
||||
<td>
|
||||
{% regroup d.future_presentations by session.meeting as meeting_pres_list %}
|
||||
{% for p in meeting_pres_list %}
|
||||
{{ p.grouper }}
|
||||
{% if p.list|length > 1 %}
|
||||
({{ p.list|length }} sessions)
|
||||
<span class="badge bg-info">{{ p.list|length }} sessions</span>
|
||||
{% else %}
|
||||
{% for pr in p.list %}
|
||||
{% if pr.rev != d.rev %}
|
||||
(-{{ pr.rev }})
|
||||
{% endif %}
|
||||
{% if pr.rev != d.rev %}(-{{ pr.rev }}){% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if not forloop.last %}, {% endif %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -73,12 +70,11 @@
|
|||
{% endfor %}
|
||||
{% else %}
|
||||
<h2>Materials</h2>
|
||||
|
||||
<p>No materials uploaded.</p>
|
||||
<p>
|
||||
No materials uploaded.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -5,4 +5,4 @@
|
|||
{# assumes group, form, needs_review, reviewer are in the context #}
|
||||
{% load django_bootstrap5 %}
|
||||
<input type="hidden" name="prefix" value="{{ form.prefix|default:"" }}"/>
|
||||
{% bootstrap_form form layout='horizontal' %}
|
||||
{% bootstrap_form form layout='horizontal' %}
|
|
@ -16,7 +16,7 @@
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
</h2>
|
||||
<table class="table table-sm table-striped{% if group.uses_milestone_dates %} tablesorter{% endif %}">
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="num">
|
||||
|
|
|
@ -1,41 +1,49 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Reset Charter Milestones for {{ group.acronym }} {{ group.type.name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Reset Charter Milestones for {{ group.acronym }} {{ group.type.name }}</h1>
|
||||
|
||||
<p>
|
||||
<h1>
|
||||
Reset Charter Milestones
|
||||
<br>
|
||||
<small class="text-muted">{{ group.acronym }} {{ group.type.name }}</small>
|
||||
</h1>
|
||||
<p class="mt-3">
|
||||
Select which of the current {{ group.type.name }} milestones you would like to copy to the charter:
|
||||
|
||||
{% if charter_milestones %}
|
||||
This will discard {{ charter_milestones|length }} existing charter milestone{{ charter_milestones|pluralize }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<form method="post" id="reset-charter-milestones">{% csrf_token %}
|
||||
{% for milestone in current_milestones %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="milestone" value="{{ milestone.id }}" {% if not milestone.resolved %}checked="checked"{% endif %} />
|
||||
|
||||
<span class="date">{% if milestone.resolved %}{{ milestone.resolved }}{% else %}{% if group.uses_milestone_dates %}{{ milestone.due|date:"M Y" }}{% endif %}{% endif %}</span>
|
||||
|
||||
{{ milestone.desc }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{% url 'ietf.group.milestones.edit_milestones;charter' group_type=group.type_id acronym=group.acronym %}">Back</a>
|
||||
<form class="my-3" method="post" id="reset-charter-milestones">
|
||||
{% csrf_token %}
|
||||
<div class="mb-3">
|
||||
{% for milestone in current_milestones %}
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
name="milestone"
|
||||
value="{{ milestone.id }}"
|
||||
{% if not milestone.resolved %}checked{% endif %}>
|
||||
<label class="form-check-label" for="{{ milestone.id }}">
|
||||
{{ milestone.desc }}
|
||||
<span class="badge {% if milestone.resolved %}bg-success{% else %}bg-info{% endif %}">
|
||||
{% if milestone.resolved %}
|
||||
{{ milestone.resolved }}
|
||||
{% else %}
|
||||
{% if group.uses_milestone_dates %}{{ milestone.due|date:"M Y" }}{% endif %}
|
||||
{% endif %}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url 'ietf.group.milestones.edit_milestones;charter' group_type=group.type_id acronym=group.acronym %}">
|
||||
Back
|
||||
</a>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,22 +1,16 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015-2020, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Set next reviewer in queue for {{ group.acronym }}</h2>
|
||||
<form id="dbtemplate-edit" role="form" method="post">
|
||||
<h1>Set next reviewer in queue<br><small class="text-muted">{{ group.acronym }}</small></h1>
|
||||
<form class="my-3" role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button class="btn btn-primary" type="submit">Save</button>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.group.views.reviewer_overview' acronym=group.acronym %}">Cancel</a>
|
||||
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url 'ietf.group.views.reviewer_overview' acronym=group.acronym %}">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,194 +1,253 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static person_filters %}
|
||||
|
||||
{% block group_subtitle %}Review requests{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
|
||||
{% if can_access_stats %}
|
||||
<h1 class="float-end"><a href="{% url "ietf.stats.views.review_stats" %}" class="icon-link"><span class="small bi bi-bar-chart-line"></span></a></h1>
|
||||
<div class="float-end">
|
||||
<a href="{% url "ietf.stats.views.review_stats" %}" class="icon-link">
|
||||
<span class="bi bi-bar-chart-line"></span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if unassigned_review_requests %}
|
||||
|
||||
<h2 class="mt-3" id="unassigned-review-requests">Unassigned review requests</h2>
|
||||
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<h2 class="mt-5" id="closed-review-requests">Unassigned and open review requests and assignments</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="request">Request</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="date">Requested</th>
|
||||
<th data-sort="date">Deadline</th>
|
||||
<th data-sort="reviewer">Reviewer</th>
|
||||
<th data-sort="state">Document state</th>
|
||||
<th data-sort="date">IESG Telechat</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if unassigned_review_requests %}
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="request">Request</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="requested">Requested</th>
|
||||
<th data-sort="deadline">Deadline</th>
|
||||
{% if review_requests.0.reviewer %}
|
||||
<th data-sort="reviewer">Reviewer</th>
|
||||
{% endif %}
|
||||
<th data-sort="state">Document state</th>
|
||||
<th data-sort="telechat">IESG Telechat</th>
|
||||
<tr class="table-info" id="unassigned-review-requests">
|
||||
<th colspan=7>Unassigned review requests</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in unassigned_review_requests %}
|
||||
<tr>
|
||||
<td>{% if r.pk != None %}<a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">{% endif %}{{ r.doc.name }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %}{% if r.pk != None %}</a>{% endif %}</td>
|
||||
<td class="text-nowrap">{{ r.type.name }}</td>
|
||||
<td class="text-end">{% if r.pk %}{{ r.time|date:"Y-m-d" }} by {{r.requested_by.plain_name}}{% else %}<em>auto-suggested</em>{% endif %}</td>
|
||||
<td class="text-end">
|
||||
{{ r.deadline|date:"Y-m-d" }}
|
||||
{% if r.due %}<br><span class="badge xxx bg-warning" title="{{ r.due }} day{{ r.due|pluralize }} past deadline">{{ r.due }} day{{ r.due|pluralize }}</span>{% endif %}
|
||||
</td>
|
||||
{% if r.reviewer %}
|
||||
<td>
|
||||
{{ r.reviewer.person }}
|
||||
{% if r.state_id == "accepted" %}<br><span class="badge bg-secondary">Accepted</span>{% endif %}
|
||||
{% if r.reviewer_unavailable %}<br><span class="badge bg-danger">Unavailable</span>{% endif %}
|
||||
<td>
|
||||
{% if r.pk != None %}
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">
|
||||
{% endif %}
|
||||
{{ r.doc.name }}-
|
||||
{% if r.requested_rev %}
|
||||
{{ r.requested_rev }}
|
||||
{% else %}
|
||||
{{ r.doc.rev }}
|
||||
{% endif %}
|
||||
{% if r.pk != None %}</a>{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{{ r.doc.friendly_state }}
|
||||
</td>
|
||||
<td>
|
||||
{% if r.doc.telechat_date %}
|
||||
{{ r.doc.telechat_date }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ r.type.name }}</td>
|
||||
<td>
|
||||
{% if r.pk %}
|
||||
{{ r.time|date:"Y-m-d" }} by {% person_link r.requested_by %}
|
||||
{% else %}
|
||||
<span class="badge bg-info">auto-suggested</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ r.deadline|date:"Y-m-d" }}
|
||||
{% if r.due %}
|
||||
<span class="badge bg-warning"
|
||||
title="{{ r.due }} day{{ r.due|pluralize }} past deadline">{{ r.due }} day{{ r.due|pluralize }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if r.reviewer %}
|
||||
{% person_link r.reviewer.person %}
|
||||
{% if r.state_id == "accepted" %}<span class="badge bg-success">Accepted</span>{% endif %}
|
||||
{% if r.reviewer_unavailable %}<span class="badge bg-danger">Unavailable</span>{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ r.doc.friendly_state }}</td>
|
||||
<td>
|
||||
{% if r.doc.telechat_date %}{{ r.doc.telechat_date }}{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% endif %}
|
||||
{% if open_review_assignments %}
|
||||
<thead>
|
||||
<tr class="table-info" id="open_review_assignments">
|
||||
<th colspan=7>Open review requests</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for a in open_review_assignments %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=a.review_request.doc.name request_id=a.review_request.pk %}">
|
||||
{{ a.review_request.doc.name }}-
|
||||
{% if a.review_request.requested_rev %}
|
||||
{{ a.review_request.requested_rev }}
|
||||
{% else %}
|
||||
{{ a.review_request.doc.rev }}
|
||||
{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ a.review_request.type.name }}</td>
|
||||
<td>{{ a.assigned_on|date:"Y-m-d" }}</td>
|
||||
<td>
|
||||
{{ a.review_request.deadline|date:"Y-m-d" }}
|
||||
{% if a.due %}
|
||||
<span class="badge bg-warning"
|
||||
title="{{ a.due }} day{{ a.due|pluralize }} past deadline">{{ a.due }} day{{ a.due|pluralize }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% person_link a.reviewer.person %}
|
||||
{% if a.state_id == "accepted" %}<span class="badge bg-success">Accepted</span>{% endif %}
|
||||
{% if a.reviewer_unavailable %}<span class="badge bg-danger">Unavailable</span>{% endif %}
|
||||
</td>
|
||||
<td>{{ a.review_request.doc.friendly_state }}</td>
|
||||
<td>
|
||||
{% if a.review_request.doc.telechat_date %}{{ a.review_request.doc.telechat_date }}{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
<h2 class="mt-5" id="closed-review-requests">Closed review requests and assignments</h2>
|
||||
<form class="closed-review-filter" action="#closed-review-requests">
|
||||
Past:
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
{% for key, label in since_choices %}
|
||||
<button class="btn btn-outline-primary {% if since == key %}active{% endif %}"
|
||||
{% if key %}name="since" value="{{ key }}"{% endif %}
|
||||
type="submit">
|
||||
{{ label }}
|
||||
</button>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if open_review_assignments %}
|
||||
<h2 class="mt-3" id="open_review_assignments">Open review assignments</h2>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="request">Request</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="assigned">Assigned</th>
|
||||
<th data-sort="deadline">Deadline</th>
|
||||
<th data-sort="reviewer">Reviewer</th>
|
||||
<th data-sort="state">Document state</th>
|
||||
<th data-sort="telechat">IESG Telechat</th>
|
||||
<th data-sort="type">
|
||||
Type
|
||||
</th>
|
||||
<th data-sort="date">
|
||||
Requested/Assigned
|
||||
</th>
|
||||
<th data-sort="date">
|
||||
Deadline
|
||||
</th>
|
||||
<th data-sort="date">
|
||||
Closed
|
||||
</th>
|
||||
<th data-sort="reviewer">
|
||||
Reviewer
|
||||
</th>
|
||||
<th data-sort="state">
|
||||
State
|
||||
</th>
|
||||
<th data-sort="result">
|
||||
Result
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for a in open_review_assignments %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.doc.views_review.review_request" name=a.review_request.doc.name request_id=a.review_request.pk %}">{{ a.review_request.doc.name }}-{% if a.review_request.requested_rev %}{{ a.review_requests.requested_rev }}{% else %}{{ a.review_request.doc.rev }}{% endif %}</a></td>
|
||||
<td class="text-nowrap">{{ a.review_request.type.name }}</td>
|
||||
<td class="text-end">{{ a.assigned_on|date:"Y-m-d" }}</td>
|
||||
<td class="text-end">
|
||||
{{ a.review_request.deadline|date:"Y-m-d" }}
|
||||
{% if a.due %}<br><span class="badge bg-warning" title="{{ a.due }} day{{ a.due|pluralize }} past deadline">{{ a.due }} day{{ a.due|pluralize }}</span>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% person_link a.reviewer.person %}
|
||||
{% if a.state_id == "accepted" %}<br><span class="badge bg-secondary">Accepted</span>{% endif %}
|
||||
{% if a.reviewer_unavailable %}<br><span class="badge bg-danger">Unavailable</span>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.review_request.doc.friendly_state }}
|
||||
</td>
|
||||
<td>
|
||||
{% if a.review_request.doc.telechat_date %}
|
||||
{{ a.review_request.doc.telechat_date }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% if closed_review_requests %}
|
||||
<thead>
|
||||
<tr class="table-info">
|
||||
<th colspan=8>
|
||||
Closed review requests
|
||||
</th>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<h2 class="mt-3" id="closed-review-requests">Closed review requests and assignments</h2>
|
||||
|
||||
<form class="closed-review-filter" action="#closed-review-requests">
|
||||
Past:
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
{% for key, label in since_choices %}
|
||||
<button class="btn btn-outline-primary {% if since == key %}active{% endif %}" {% if key %}name="since" value="{{ key }}"{% endif %} type="submit">{{ label }}</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% if closed_review_requests %}
|
||||
<h3 class="mt-3">Closed review requests</h3>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="request">Request</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="requested">Requested</th>
|
||||
<th data-sort="deadline">Deadline</th>
|
||||
<th data-sort="closed">Closed</th>
|
||||
<th data-sort="state">State</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in closed_review_requests %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">{{ r.doc.name }}{% if r.requested_rev %}-{{ r.requested_rev }}{% endif %}</a></td>
|
||||
<td class="text-nowrap">{{ r.type }}</td>
|
||||
<td class="text-end">{{ r.time|date:"Y-m-d" }} by {{ r.requested_by.plain_name }}</td>
|
||||
<td class="text-end">{{ r.deadline|date:"Y-m-d" }}</td>
|
||||
<td class="text-end">{{ r.request_closed_time|date:"Y-m-d" }}</td>
|
||||
<td>{{ r.state.name }}</td>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in closed_review_requests %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">
|
||||
{{ r.doc.name }}
|
||||
{% if r.requested_rev %}-{{ r.requested_rev }}{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ r.type }}
|
||||
</td>
|
||||
<td>
|
||||
{{ r.time|date:"Y-m-d" }} by {% person_link r.requested_by %}
|
||||
</td>
|
||||
<td>
|
||||
{{ r.deadline|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
{{ r.request_closed_time|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
{{ r.state.name }}
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% endif %}
|
||||
{% if closed_review_assignments %}
|
||||
<thead>
|
||||
<tr class="table-info">
|
||||
<th colspan=8>
|
||||
Closed review assignments
|
||||
</th>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if closed_review_assignments %}
|
||||
<h3 class="mt-3">Closed review assignments</h3>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="request">Request</th>
|
||||
<th data-sort="type">Type</th>
|
||||
<th data-sort="assigned">Assigned</th>
|
||||
<th data-sort="deadline">Deadline</th>
|
||||
<th data-sort="closed">Closed</th>
|
||||
<th data-sort="reviewer">Reviewer</th>
|
||||
<th data-sort="state">State</th>
|
||||
<th data-sort="result">Result</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for a in closed_review_assignments %}
|
||||
<tr>
|
||||
<td><a href="{% url "ietf.doc.views_review.review_request" name=a.review_request.doc.name request_id=a.review_request.pk %}">{{ a.review_request.doc.name }}{% if a.review_request.requested_rev %}-{{ a.review_request.requested_rev }}{% endif %}</a></td>
|
||||
<td class="text-nowrap">{{ a.review_request.type }}</td>
|
||||
<td class="text-end">{{ a.assigned_on|date:"Y-m-d" }}</td>
|
||||
<td class="text-end">{{ a.review_request.deadline|date:"Y-m-d" }}</td>
|
||||
<td class="text-end">{{ a.completed_on|date:"Y-m-d" }}</td>
|
||||
<td>{% person_link a.reviewer.person %}</td>
|
||||
<td>{{ a.state }}</td>
|
||||
<td>{% if a.result %}{{ a.result }}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if not closed_review_requests and not closed_review_assignments %}
|
||||
<p class="mt-3">None found</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for a in closed_review_assignments %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=a.review_request.doc.name request_id=a.review_request.pk %}">
|
||||
{{ a.review_request.doc.name }}
|
||||
{% if a.review_request.requested_rev %}-{{ a.review_request.requested_rev }}{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ a.review_request.type }}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.assigned_on|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.review_request.deadline|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.completed_on|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
{% person_link a.reviewer.person %}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.state }}
|
||||
</td>
|
||||
<td>
|
||||
{% if a.result %}{{ a.result }}{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}">
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,103 +1,140 @@
|
|||
{# bs5ok #}
|
||||
{% extends "group/group_base.html" %}
|
||||
{# Copyright The IETF Trust 2015-2020, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static django_bootstrap5 %}
|
||||
|
||||
{% block group_subtitle %}Reviewers{% endblock %}
|
||||
|
||||
{% block group_content %}
|
||||
{% origin %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% if can_access_stats %}
|
||||
<h1 class="float-end"><a href="{% url "ietf.stats.views.review_stats" stats_type="completion" acronym=group.acronym %}" class="icon-link"> <span class="small bi bi-bar-chart-line"> </span></a></h1>
|
||||
<div class="float-end">
|
||||
<a href="{% url "ietf.stats.views.review_stats" stats_type="completion" acronym=group.acronym %}"
|
||||
class="icon-link">
|
||||
<span class="bi bi-bar-chart-line"> </span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2>Reviewers</h2>
|
||||
|
||||
<p>Status of the reviewers in {{ group.acronym }}, ordered by their
|
||||
<h2 class="mt-3">Reviewers</h2>
|
||||
<p>
|
||||
Status of the reviewers in {{ group.acronym }}, ordered by their
|
||||
rotation with the next reviewer in the rotation at the top. Rows with darker backgrounds have the following meaning:
|
||||
</p>
|
||||
<div class="reviewer-overview">
|
||||
<p class="busy">Has already been assigned a document within the given interval.</p>
|
||||
<p class="skip-next">Will be skipped the next time at the top of rotation.</p>
|
||||
<p class="completely-unavailable">Is not available to do reviews at this time.</p>
|
||||
<p class="alert alert-secondary">
|
||||
Has already been assigned a document within the given interval.
|
||||
</p>
|
||||
<p class="alert alert-warning">
|
||||
Will be skipped the next time at the top of rotation.
|
||||
</p>
|
||||
<p class="alert alert-danger">
|
||||
Is not available to do reviews at this time.
|
||||
</p>
|
||||
</div>
|
||||
{% if can_reset_next_reviewer %}
|
||||
<div>
|
||||
<a href="{% url 'ietf.group.views.reset_next_reviewer' acronym=group.acronym %}" class="btn btn-primary" id="reset_next_reviewer">Reset head of queue</a>
|
||||
<a href="{% url 'ietf.group.views.reset_next_reviewer' acronym=group.acronym %}"
|
||||
class="btn btn-primary"
|
||||
id="reset_next_reviewer">
|
||||
Reset head of queue
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if reviewers %}
|
||||
<table class="table reviewer-overview tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Next</th>
|
||||
<th>Reviewer</th>
|
||||
<th>Assigned/Deadline/state/time between assignment and closure for latest assignments</th>
|
||||
<th>Days Since Com­plet­ed</th>
|
||||
<th>Settings</th>
|
||||
<th data-sort="num">Next</th>
|
||||
<th data-sort="reviewer">Reviewer</th>
|
||||
<th data-sort="assigned">Recent history</th>
|
||||
<th data-sort="num">Days since completed</th>
|
||||
<th data-sort="settings">Settings</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for person in reviewers %}
|
||||
<tr {% if person.completely_unavailable %}class="completely-unavailable"
|
||||
{% elif person.busy %}class="busy"
|
||||
{% elif person.settings.skip_next %}class="skip-next"
|
||||
{% endif %}>
|
||||
<tr {% if person.completely_unavailable %}class="table-danger" title="Is not available to do reviews at this time." {% elif person.busy %}class="table-secondary" title="Has already been assigned a document within the given interval." {% elif person.settings.skip_next %}class="table-warning" title="Will be skipped the next time at the top of rotation." {% endif %}>
|
||||
<td>{{ forloop.counter }}</td>
|
||||
<td>{% if person.settings_url %}<a href="{{ person.settings_url }}" title="{{person.settings.expertise}}">{% endif %}{{ person }}{% if person.settings_url %}</a>{% endif %}</td>
|
||||
<td>
|
||||
<table class="simple-table">
|
||||
{% if person.settings_url %}<a href="{{ person.settings_url }}"
|
||||
title="{{ person.settings.expertise }}">{% endif %}
|
||||
{{ person }}
|
||||
{% if person.settings_url %}</a>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if person.latest_reqs %}
|
||||
<table class="table table-sm table-borderless">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Assigned</th>
|
||||
<th>Deadline</th>
|
||||
<th>State</th>
|
||||
<th>Review time</th>
|
||||
<th>Document</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for assn_pk, req_pk, doc_name, reviewed_rev, assigned_time, deadline, state, assignment_to_closure_days in person.latest_reqs %}
|
||||
<tr>
|
||||
<td><span style="display:none">X</span>{{ assigned_time|date }}</td>
|
||||
<td><a href="{% url "ietf.doc.views_review.review_request" name=doc_name request_id=req_pk %}">{{ deadline|date }}</a></td>
|
||||
<td>
|
||||
<span class="badge bg-{% if state.slug == "completed" or state.slug == "part-completed" %}success{% elif state.slug == "no-response" %}danger{% elif state.slug == "overtaken" %}warning{% elif state.slug == "requested" or state.slug == "accepted" %}primary{% else %}default{% endif %}">{{ state.name }}</span>
|
||||
<span style="display:none">X</span>{{ assigned_time|date }}
|
||||
</td>
|
||||
<td>
|
||||
{% if assignment_to_closure_days != None %}{{ assignment_to_closure_days }} day{{ assignment_to_closure_days|pluralize }}{% endif %}
|
||||
<a href="{% url "ietf.doc.views_review.review_request" name=doc_name request_id=req_pk %}">{{ deadline|date }}</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge bg-{% if state.slug == "completed" or state.slug == "part-completed" %}success{% elif state.slug == "no-response" %}danger{% elif state.slug == "overtaken" %}warning{% elif state.slug == "requested" or state.slug == "accepted" %}primary{% else %}secondary{% endif %}">{{ state.name }}</span>
|
||||
</td>
|
||||
<td>
|
||||
{% if assignment_to_closure_days != None %}
|
||||
{{ assignment_to_closure_days }} day{{ assignment_to_closure_days|pluralize }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc_name }}
|
||||
{% if reviewed_rev %}-{{ reviewed_rev }}{% endif %}
|
||||
</td>
|
||||
<td class="text-nowrap">{{ doc_name }}{% if reviewed_rev %}-{{ reviewed_rev }}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> {% if person.days_since_completed_review != 9999 %} {{ person.days_since_completed_review }} {% else %} <span style="display:none">9999</span> </td> {% endif %}
|
||||
<td>
|
||||
{% if person.settings.min_interval %}
|
||||
{{ person.settings.get_min_interval_display }}<br>
|
||||
{% endif %}
|
||||
|
||||
{% if person.settings.skip_next %}
|
||||
Skip: {{ person.settings.skip_next }}<br>
|
||||
{% endif %}
|
||||
|
||||
{% if person.settings.filter_re %}
|
||||
Filter: <code title="{{ person.settings.filter_re }}">{{ person.settings.filter_re|truncatechars:15 }}</code><br>
|
||||
{% endif %}
|
||||
|
||||
{% if person.unavailable_periods %}
|
||||
{% include "review/unavailable_table.html" with unavailable_periods=person.unavailable_periods %}
|
||||
{% endif %}
|
||||
<td>
|
||||
{% if person.days_since_completed_review != 9999 %}
|
||||
{{ person.days_since_completed_review }}
|
||||
{% else %}
|
||||
<span style="display:none">9999</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<td>
|
||||
{% if person.settings.min_interval %}
|
||||
<b>{{ person.settings.get_min_interval_display }}</b>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if person.settings.skip_next %}
|
||||
<b>Skip:</b> {{ person.settings.skip_next }}
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if person.settings.filter_re %}
|
||||
<b>Filter:</b> <code title="{{ person.settings.filter_re }}">{{ person.settings.filter_re|truncatechars:15 }}</code>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if person.unavailable_periods %}
|
||||
{% include "review/unavailable_table.html" with unavailable_periods=person.unavailable_periods %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% else %}
|
||||
<p>No reviewers found.</p>
|
||||
<p>
|
||||
No reviewers found.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,28 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load ietf_filters static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ stream }} stream documents{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ stream }} stream documents</h1>
|
||||
|
||||
{% if editable %}
|
||||
<p>
|
||||
<a class="btn btn-primary" href="{% url "ietf.group.views.stream_edit" stream.slug %}">Assign delegates</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.group.views.stream_edit" stream.slug %}">Assign delegates</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% include "doc/search/search_results.html" %}
|
||||
{% include "doc/search/search_results.html" with start_table=True end_table=True %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,24 +1,25 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/iesg-agenda/"/>
|
||||
{% endblock %}
|
||||
{% block title %}
|
||||
IESG agenda: {{ date }}
|
||||
{% endblock %}
|
||||
{% block pagehead %}<link rel="alternate" type="application/atom+xml" href="/feed/iesg-agenda/"/>{% endblock %}
|
||||
{% block title %}IESG agenda: {{ date }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>IESG agenda: {{ date }}</h1>
|
||||
<h1>
|
||||
IESG agenda
|
||||
<br>
|
||||
<small class="text-muted">{{ date }}</small>
|
||||
</h1>
|
||||
{% include "iesg/nav.html" with active="agenda" %}
|
||||
{% for num, section in sections %}
|
||||
{% if num|sectionlevel == 1 %}
|
||||
<h2 id="sec-{{ num|slugify }}">{{ num }}. {{ section.title|safe }}</h2>
|
||||
<h2 class="mt-3" id="sec-{{ num|slugify }}">{{ num }}. {{ section.title|safe }}</h2>
|
||||
{% elif num|sectionlevel == 2 %}
|
||||
<h3 id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h3>
|
||||
<h3 class="mt-3" id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h3>
|
||||
{% elif num|sectionlevel == 3 %}
|
||||
<h4 id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h4>
|
||||
<h4 class="mt-3" id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h4>
|
||||
{% endif %}
|
||||
{% if num == "1.4" %}<pre>{{ section.text }}</pre>{% endif %}
|
||||
{% if num >= "2" and num < "5" %}
|
||||
|
@ -111,10 +112,4 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
// automatically generate a right-hand navigation tab for long pages
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% block js %}<script>// automatically generate a right-hand navigation tab for long pages</script>{% endblock %}
|
|
@ -1,10 +1,9 @@
|
|||
{% extends "base.html" %}
|
||||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static %}
|
||||
{% load ietf_filters %}
|
||||
{% block title %}{{ group_type | upper }} {{ role }} Photos{% endblock %}
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ group_type | upper }} {{ role }} Photos</h1>
|
||||
|
@ -15,29 +14,11 @@
|
|||
<h2 class="mt-5">
|
||||
<a href="{% url 'ietf.group.views.group_home' acronym=letter.grouper %}">{{ letter.list.0.group.name }}</a>
|
||||
</h2>
|
||||
<div class="row row-cols-1 row-cols-sm-3 g-5">
|
||||
<div class="mt-0 row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-2 row-cols-xl-3 row-cols-xxl-3 g-">
|
||||
{% regroup letter.list by person as person_groups %}
|
||||
{% for person_with_groups in person_groups %}
|
||||
<div class="col">
|
||||
<div class="card text-center photo-thumbnail">
|
||||
{% if person_with_groups.grouper.photo_thumb %}
|
||||
<img class="card-img-top"
|
||||
src="{{ person_with_groups.grouper.photo_thumb.url }}"
|
||||
alt="Photo of {{ person_with_groups.grouper.name }}"/>
|
||||
{% else %}
|
||||
<i class="bi bi-person-square text-muted" style="font-size: 6rem;"></i>
|
||||
{% endif %}
|
||||
<div class="card-body">
|
||||
<p class="card-title fs-5">
|
||||
{% if person_with_groups.grouper.photo %}
|
||||
<a class="stretched-link"
|
||||
href="{% url 'ietf.person.views.profile' email_or_name=person_with_groups.grouper.name %}">
|
||||
{% endif %}
|
||||
{{ person_with_groups.grouper.plain_name }}
|
||||
{% if person_with_groups.grouper.photo %}</a>{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% include "person/photo.html" with person=person_with_groups.grouper groups=person_with_groups.list %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
{% block title %}Intellectual property rights disclosures{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
|
||||
{% block title %}NomCom{% endblock %}
|
||||
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#nav-instructions"{% endblock %}
|
||||
|
||||
{% block subtitle %} - Configuration Help {% endblock %}
|
||||
|
||||
{% block nomcom_content %}
|
||||
|
@ -95,5 +93,4 @@ extendedKeyUsage= emailProtection
|
|||
<h3 id="test">Test the results</h3>
|
||||
<p> Before advertising that your nomcom pages are ready for the community to use, test your configuration. Create a dummy nominee for at least one position, and give it some feedback. You will be able to move this out of the way later. Once you've marked positions as open, ask your nomcom members to look over the expertise and questionnaires tab (which show rendered view of each of the templates for each position) to ensure they contain what you want the community to see. Please don't assume that everything is all right without looking. It's a good idea to give the secretariat and the tools team a heads up a few (preferably 3 to 5) days notice before announcing that your pages are ready for community use.
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% endblock %}
|
|
@ -8,7 +8,7 @@
|
|||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
|
||||
{% block title %}NomCom{% endblock %}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
{% block subtitle %} - View feedback {% endblock %}
|
||||
|
||||
{% block bodyAttrs %}data-bs-spy="scroll" data-bs-target="#affix"{% endblock %}
|
||||
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
|
|
|
@ -1,23 +1,17 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2020, All Rights Reserved #}
|
||||
{% spaceless %}
|
||||
<span class="text-nowrap {{ class }}">
|
||||
{% if email or name %}
|
||||
<span {% if class or nowrap %}class="{% if nowrap %}text-nowrap{% endif %} {{ class }}"{% endif %}>
|
||||
{% if email or name %}
|
||||
<a {% if class %}class="text-reset"{% endif %}
|
||||
title="{% if title %}{{ title }}{% else %}Datatracker profile of {{ name }}.{% endif %}"
|
||||
{% if email %} href="{% url 'ietf.person.views.profile' email_or_name=email %}" {% else %} href="{% url 'ietf.person.views.profile' email_or_name=name %}" {% endif %}>{{ name }}</a>
|
||||
{% if email and with_email %}
|
||||
<a {% if class %}class="text-reset"{% endif %}
|
||||
title="{% if title %}{{ title }}{% else %}Datatracker profile of {{ name }}.{% endif %}"
|
||||
{% if email %} href="{% url 'ietf.person.views.profile' email_or_name=email %}" {% else %} href="{% url 'ietf.person.views.profile' email_or_name=name %}" {% endif %}>
|
||||
{{ name }}
|
||||
</a>
|
||||
{% if email %}
|
||||
|
||||
<a {% if class %}class="text-reset"{% endif %}
|
||||
href="mailto:{{ email|urlencode }}"
|
||||
title="Compose email to {{ email }}.">
|
||||
<span class="bi bi-envelope"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ name }}
|
||||
href="mailto:{{ email|urlencode }}"
|
||||
title="Compose email to {{ email }}.">
|
||||
<span class="bi bi-envelope"></span></a>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endspaceless %}
|
||||
{% else %}
|
||||
{{ name }}
|
||||
{% endif %}
|
||||
</span>
|
32
ietf/templates/person/photo.html
Normal file
32
ietf/templates/person/photo.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static person_filters %}
|
||||
<div class="card shadow-sm mb-3 text-center photo" style="width: 13em; ">
|
||||
{% if name or email %}
|
||||
<a title="Datatracker profile of {{ person.name }}."
|
||||
href="{% if name %}{% url 'ietf.person.views.profile' email_or_name=name %}{% else %}{% url 'ietf.person.views.profile' email_or_name=email %}{% endif %}">
|
||||
{% endif %}
|
||||
{% if person.photo_thumb %}
|
||||
<img class="card-img-top"
|
||||
style="object-fit: cover;
|
||||
height: 15em;"
|
||||
src="{{ person.photo_thumb.url }}"
|
||||
alt="Photo of {{ person.name }}"/>
|
||||
{% else %}
|
||||
<div style="height: 15em;">
|
||||
<i class="bi bi-person text-muted" style="font-size: 12em;"></i>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if name or email %}</a>{% endif %}
|
||||
<div class="card-body">
|
||||
<p class="lead">
|
||||
{% person_link person with_email=False nowrap=False %}
|
||||
</p>
|
||||
{% for role in groups %}
|
||||
<a title="{{ role.group.name }} {{ role.group.type | upper }}"
|
||||
href="{% url 'ietf.group.views.group_home' acronym=role.group.acronym %}">
|
||||
{{ role.group.acronym }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
|
@ -1,18 +1,24 @@
|
|||
<table class="simple-table">
|
||||
{# bs5ok #}
|
||||
<table class="mt-2 mb-0 table table-sm table-borderless">
|
||||
{% for p in unavailable_periods %}
|
||||
<tr class="unavailable-period-{{ p.state }}">
|
||||
<th class="padded-right">Dates:</th>
|
||||
<td> {% if p.start_date or p.end_date %}{{ p.start_date|default:"∞" }} -{% endif %} {{ p.end_date|default:"∞" }}</td>
|
||||
<th>Period:</th>
|
||||
<td>{{ p.state }}</td>
|
||||
</tr>
|
||||
<tr class="unavailable-period-{{ p.state }}">
|
||||
<th class="padded-right">Availability:</th>
|
||||
<th>Dates:</th>
|
||||
<td>
|
||||
{% if p.start_date or p.end_date %}{{ p.start_date|default:"∞" }} -{% endif %}
|
||||
{{ p.end_date|default:"∞" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="unavailable-period-{{ p.state }}">
|
||||
<th>Availability:</th>
|
||||
<td>{{ p.get_availability_display }}</td>
|
||||
</tr>
|
||||
<tr class="unavailable-period-{{ p.state }}">
|
||||
<th class="padded-right">Reason:</th>
|
||||
<th>Reason:</th>
|
||||
<td>{{ p.reason }}</td>
|
||||
</tr>
|
||||
<tr><td> </td></td></td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</table>
|
1691
package-lock.json
generated
1691
package-lock.json
generated
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue