datatracker/ietf/templates/group/review_requests.html
Lars Eggert 5598762608
fix: add more HTML validation & fixes (#3891)
* 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
2022-05-03 13:55:48 -05:00

256 lines
12 KiB
HTML

{% extends "group/group_base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% 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 %}
<div class="float-end">
<a href="{% url "ietf.stats.views.review_stats" %}" class="icon-link">
<i class="bi bi-bar-chart-line"></i>
</a>
</div>
{% endif %}
<h2 class="mt-5" id="unassigned-and-open-review-requests">Unassigned and open review requests and assignments</h2>
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="request">Request</th>
<th scope="col" data-sort="type">Type</th>
<th scope="col" data-sort="req-date">Requested</th>
<th scope="col" data-sort="deadline-date">Deadline</th>
<th scope="col" data-sort="state">Document state</th>
<th scope="col" data-sort="telechat-date">IESG Telechat</th>
</tr>
</thead>
<tbody>
<tr class="table-info" id="unassigned-review-requests">
<th scope="col" colspan="6">Unassigned review requests</th>
</tr>
</tbody>
<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>{{ 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>{{ r.doc.friendly_state }}</td>
<td>
{% if r.doc.telechat_date %}{{ r.doc.telechat_date }}{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="request">Request</th>
<th scope="col" data-sort="type">Type</th>
<th scope="col" data-sort="req-date">Requested</th>
<th scope="col" data-sort="deadline-date">Deadline</th>
<th scope="col" data-sort="reviewer">Reviewer</th>
<th scope="col" data-sort="state">Document state</th>
<th scope="col" data-sort="telechat-date">IESG Telechat</th>
</tr>
</thead>
<tbody>
<tr class="table-info" id="open_review_assignments">
<th scope="col" colspan="7">Open review requests</th>
</tr>
</tbody>
<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>
<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 %}
</div>
</form>
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="request">Request</th>
<th scope="col" data-sort="type">
Type
</th>
<th scope="col" data-sort="req-date">
Requested
</th>
<th scope="col" data-sort="deadline-date">
Deadline
</th>
<th scope="col" data-sort="closed-date">
Closed
</th>
<th scope="col" data-sort="state">
State
</th>
</tr>
</thead>
<tbody>
<tr class="table-info">
<th scope="col" colspan="6">
Closed review requests
</th>
</tr>
</tbody>
<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>
{{ r.state.name }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="request">Request</th>
<th scope="col" data-sort="type">
Type
</th>
<th scope="col" data-sort="assgn-date">
Assigned
</th>
<th scope="col" data-sort="deadline-date">
Deadline
</th>
<th scope="col" data-sort="closed-date">
Closed
</th>
<th scope="col" data-sort="reviewer">
Reviewer
</th>
<th scope="col" data-sort="state">
State
</th>
<th scope="col" data-sort="result">
Result
</th>
</tr>
</thead>
<tbody>
<tr class="table-info">
<th scope="col" colspan="8">
Closed review assignments
</th>
</tr>
</tbody>
<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>
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}">
</script>
{% endblock %}