* Update vnu.jar * Fix py2 -> py3 issue * Run pyupgrade * test: Add default-jdk to images * test: Add option to also validate HTML with vnu.jar Since it's already installed in bin. Don't do this by default, since it increases the time needed for tests by ~50%. * fix: Stop the urlizer from urlizing in linkified mailto: text * More HTML fixes * More HTML validation fixes * And more HTML fixes * Fix floating badge * Ignore unicode errors * Only URLize docs that are existing * Final fixes * Don't URLize everything during test-crawl * Feed HTML into vnu using python rather than Java to speed things up * Allow test-crawl to start vnu on a different port * Increase retry count to vnu. Restore batch size to 30. * More HTML validation fixes * Use urllib3 to make requests to vnu, since overriding requests_mock is tricky * Undo commit of unmodified file * Also urlize ftp links * Fix matching of file name * More HTML fixes * Add `is_valid_url` filter * weekday -> data-weekday * urlencode URLs * Add and use vnu_fmt_message. Bump vnu max buffer. * Simplify doc_exists * Don't add tab link to mail archive if the URL is invalid * Run urlize_ietf_docs before linkify Reduces the possibility of generating incorrect HTML * Undo superfluous change * Runner fixes * Consolidate vnu message filtering into vnu_filter_message * Correctly handle multiple persons with same name * Minimze diff * Fix HTML nits * Print source snippet in vnu_fmt_message * Only escape if there is something to escape * Fix snippet * Skip crufty old IPR declarations * Only include modal when needed. Add handles. * Fix wordwrap+linkification * Update ietf/doc/templatetags/ietf_filters.py * Update ietf/doc/templatetags/tests_ietf_filters.py * Don't right-align second column
337 lines
14 KiB
HTML
337 lines
14 KiB
HTML
{% 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 my-3">
|
|
<b>Note:</b> The data for concluded {{ group.type.name }}s is occasionally incorrect.
|
|
</p>
|
|
{% endif %}
|
|
<table class="my-3 table table-sm table-borderless">
|
|
<tbody class="meta border-top">
|
|
<tr>
|
|
<th scope="row">{{ group.type.name }}</th>
|
|
<th scope="row">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>
|
|
{% endif %}
|
|
</td>
|
|
<th scope="row">{{ group.name }}</th>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<th scope="row">Acronym</th>
|
|
<td class="edit"></td>
|
|
<td>{{ group.acronym }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
{% if group.parent and group.parent.type_id == "area" %}
|
|
<th scope="row">{{ group.parent.type.name }}</th>
|
|
<td class="edit"></td>
|
|
<td>
|
|
{{ group.parent.name }}
|
|
<a href="{% url "ietf.group.views.group_home" acronym=group.parent.acronym %}">({{ group.parent.acronym }})</a>
|
|
</td>
|
|
{% else %}
|
|
<td></td>
|
|
<td class="edit"></td>
|
|
<td></td>
|
|
{% endif %}
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<th scope="row">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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
<span class="{% if group.state.name|slugify == 'active' %}text-success{% elif group.state.name|slugify == 'concluded' %}text-danger{% endif %}">{{ group.state.name }}</span>
|
|
{% if requested_close %}<div class="badge bg-info">Being closed</div>{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% if group.features.has_chartering_process %}
|
|
<tr>
|
|
<td></td>
|
|
<th scope="row">Charter</th>
|
|
<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>
|
|
<span class="badge bg-info">{{ group.charter.get_state.name }}</span>
|
|
{% else %}
|
|
<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 %}
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% if can_provide_status_update or status_update %}
|
|
<tr id="status_update">
|
|
<td>
|
|
</td>
|
|
<th scope="row">
|
|
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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if status_update %}
|
|
<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 %}
|
|
<span class="text-muted">
|
|
(None)
|
|
</span>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% if group.features.has_documents %}
|
|
<tr id="dependency_graph">
|
|
<td>
|
|
</td>
|
|
<th scope="row">
|
|
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 scope="row">
|
|
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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if resources %}
|
|
{% for resource in resources|dictsort:"display_name" %}
|
|
{# Maybe make how a resource displays itself a method on the class so templates aren't doing this switching #}
|
|
{% if resource.name.type.slug == 'url' or resource.name.type.slug == 'email' %}
|
|
<a href="{{ resource.value|urlencode }}" title="{{ resource.name.name }}">
|
|
{% firstof resource.display_name resource.name.name %}</a>{% else %}
|
|
<span title="{{ resource.name.name }}">
|
|
{% firstof resource.display_name resource.name.name %}: {{ resource.value|escape }}
|
|
</span>{% endif %}{% if not forloop.last %}{% if resource.display_name|length < 15 and resource.name.name|length < 15 and resources|length <= 3 %},{% else %}<br>{% endif %}{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% endwith %}
|
|
</tbody>
|
|
{% if group.personnel %}
|
|
<tbody class="meta border-top">
|
|
{% for slug, label, roles in group.personnel %}
|
|
<tr>
|
|
{% if forloop.first %}
|
|
<th scope="row">
|
|
Personnel
|
|
</th>
|
|
{% else %}
|
|
<td>
|
|
</td>
|
|
{% endif %}
|
|
<th scope="row">
|
|
{{ 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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% for r in roles %}
|
|
{% role_person_link r %}{% if not forloop.last %}{% if roles|length > 3%}<br>{% else %},{% endif %}{% endif %}
|
|
{% endfor %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
{% endif %}
|
|
{% if group.list_email %}
|
|
<tbody class="meta border-top">
|
|
<tr>
|
|
<th scope="row">
|
|
Mailing list
|
|
</th>
|
|
<th scope="row">
|
|
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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{{ group.list_email|linkify }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<th scope="row">
|
|
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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{{ group.list_subscribe|linkify }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<th scope="row">
|
|
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>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{{ group.list_archive|linkify }}
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
{% endif %}
|
|
{% if group.state_id != "conclude" and group.features.has_default_jabber %}
|
|
<tbody class="meta border-top">
|
|
<tr>
|
|
<th scope="row">
|
|
Jabber chat
|
|
</th>
|
|
<th scope="row">
|
|
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 scope="row">
|
|
Logs
|
|
</th>
|
|
<td class="edit">
|
|
</td>
|
|
<td>
|
|
<a href="https://jabber.ietf.org/jabber/logs/{{ group.acronym }}/">
|
|
https://jabber.ietf.org/jabber/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 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 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|urlize_ietf_docs|linkify|linebreaks }}
|
|
{% else %}
|
|
<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" }}
|
|
{% if can_edit_group %}
|
|
<a class="btn btn-primary mb-3"
|
|
href="{% url 'ietf.group.views.edit' acronym=group.acronym field='description' %}">
|
|
Edit group description
|
|
</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if group.features.has_milestones %}
|
|
{% include "group/milestones.html" with milestones=group.milestones heading=True %}
|
|
{% if milestones_in_review %}
|
|
<p>
|
|
{{ milestones_in_review|length }} new milestone{{ milestones_in_review|pluralize }}
|
|
currently in {{ milestone_reviewer }} review.
|
|
</p>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endblock %}
|