Skip to content

Commit c3e8cab

Browse files
committed
Revamp the layout in the manage review requests page. Drop the table
and instead provide more information about each document to be reviewed, to help the secretaries determine locally on that page what action to take. The new layout should also make it easier to fit in more info, in case it is still found lacking. The public review request page still provides the previous information in the summarized tabular form, so the overview can be found there. - Legacy-Id: 12278
1 parent 58dd25f commit c3e8cab

5 files changed

Lines changed: 120 additions & 105 deletions

File tree

ietf/group/views_review.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def get_open_review_requests_for_team(team, assignment_status=None):
3535
team=team,
3636
state__in=("requested", "accepted")
3737
).prefetch_related(
38-
"reviewer__person", "type", "state"
38+
"reviewer__person", "type", "state", "doc", "doc__states",
3939
).order_by("-time", "-id")
4040

4141
if assignment_status == "unassigned":
@@ -234,6 +234,8 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
234234
query_dict = request.POST.copy() if request.method == "POST" else None
235235

236236
for req in review_requests:
237+
req.form = ManageReviewRequestForm(req, query_dict)
238+
237239
# add previous requests
238240
l = []
239241
for r in document_requests.get(req.doc_id, []):
@@ -249,8 +251,6 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
249251

250252
req.latest_reqs = l
251253

252-
req.form = ManageReviewRequestForm(req, query_dict)
253-
254254
saving = False
255255
newly_closed = newly_opened = newly_assigned = 0
256256

ietf/review/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,13 +550,14 @@ def suggested_review_requests_for_team(team):
550550

551551
telechat_docs = reviewable_docs_qs.filter(
552552
docevent__telechatdocevent__telechat_date__in=telechat_dates
553-
).values_list("pk", flat=True)
553+
)
554554

555555
# we need to check the latest telechat event for each document
556556
# scheduled for the telechat, as the appearance might have been
557557
# cancelled/moved
558558
telechat_events = TelechatDocEvent.objects.filter(
559-
doc__in=list(telechat_docs), # explicitly turn into list so we don't get a complex and slow join sent down to the DB
559+
# turn into list so we don't get a complex and slow join sent down to the DB
560+
doc__in=list(telechat_docs.values_list("pk", flat=True)),
560561
).values_list(
561562
"doc", "pk", "time", "telechat_date"
562563
).order_by("doc", "-time", "-id").distinct()

ietf/static/ietf/css/ietf.css

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -503,16 +503,19 @@ form.complete-review .mail-archive-search-result .date {
503503

504504
form.review-requests .reviewer-controls, form.review-requests .close-controls {
505505
display: none;
506-
padding-right: 1em;
507506
}
508507

509508
form.review-requests .assign-action, form.review-requests .close-action {
510509
display: inline-block;
511-
min-width: 11em;
510+
margin-left: 0.5em;
511+
}
512+
513+
form.review-requests .request-metadata {
514+
margin-bottom: 0.5em;
512515
}
513516

514-
form.review-requests .deadline {
515-
padding-top: 0.45em;
517+
form.review-requests .abstract {
518+
font-size: 95%;
516519
}
517520

518521
form.review-requests label {

ietf/static/ietf/js/manage-review-requests.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ $(document).ready(function () {
2727
}
2828

2929
form.find(".assign-action button").on("click", function () {
30-
var row = $(this).closest("tr");
30+
var row = $(this).closest(".review-request");
3131

3232
var select = row.find(".reviewer-controls [name$=\"-reviewer\"]");
3333
if (!select.val()) {
@@ -39,7 +39,7 @@ $(document).ready(function () {
3939
});
4040

4141
form.find("[name$=\"-action\"][value=\"assign\"]").each(function () {
42-
var v = $(this).closest("tr").find("[name$=\"-reviewer\"]").val();
42+
var v = $(this).closest(".review-request").find("[name$=\"-reviewer\"]").val();
4343
if (v)
4444
reviewerAssigned[v] += 1;
4545
});
@@ -70,20 +70,20 @@ $(document).ready(function () {
7070
});
7171

7272
form.find(".reviewer-controls .undo").on("click", function () {
73-
var row = $(this).closest("tr");
73+
var row = $(this).closest(".review-request");
7474
row.find("[name$=\"-action\"]").val("");
7575
row.find("[name$=\"-reviewer\"]").val($(this).data("initial"));
7676
setControlDisplay(row);
7777
});
7878

7979
form.find(".close-action button").on("click", function () {
80-
var row = $(this).closest("tr");
80+
var row = $(this).closest(".review-request");
8181
row.find("[name$=\"-action\"]").val("close");
8282
setControlDisplay(row);
8383
});
8484

8585
form.find(".close-controls .undo").on("click", function () {
86-
var row = $(this).closest("tr");
86+
var row = $(this).closest(".review-request");
8787
row.find("[name$=\"-action\"]").val("");
8888
setControlDisplay(row);
8989
});
@@ -93,7 +93,7 @@ $(document).ready(function () {
9393
if (!v)
9494
return;
9595

96-
var row = $(this).closest("tr");
96+
var row = $(this).closest(".review-request");
9797
setControlDisplay(row);
9898
});
9999

ietf/templates/group/manage_review_requests.html

Lines changed: 101 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -38,104 +38,115 @@ <h1>Manage {{ assignment_status }} open review requests for {{ group.acronym }}<
3838

3939
{% if review_requests %}
4040
<form class="review-requests" method="post">{% csrf_token %}
41-
<table class="table table-condensed table-striped materials">
42-
<thead>
43-
<tr>
44-
<th>Document</th>
45-
<th>Deadline</th>
46-
<th style="min-width:65%">Action</th>
47-
</tr>
48-
</thead>
49-
<tbody>
50-
{% for r in review_requests %}
51-
<tr>
52-
<td>
53-
<a href="{% if r.requested_rev %}{% url "doc_view" name=r.doc.name rev=r.requested_rev %}{% else %}{% url "doc_view" name=r.doc.name %}{% endif %}">{{ r.doc.name }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %}</a>
5441

55-
<div>
56-
<small>
57-
{% if r.pk != None %}<a href="{% url "ietf.doc.views_review.review_request" name=r.doc.name request_id=r.pk %}">Req: {{ r.time|date:"Y-m-d" }}{% else %}<em>auto-suggested</em>{% endif %} - {{ r.type.name }}{% if r.pk != None %}</a>{% endif %}
58-
</small>
59-
</div>
60-
61-
{% if r.latest_reqs %}
62-
{% for rlatest in r.latest_reqs %}
63-
<div>
64-
<small>- prev. review of {% if rlatest.doc_id != r.doc_id %}{{ rlatest.doc_id }}{% endif %}-{{ rlatest.reviewed_rev }}:
65-
<a href="{% url "ietf.doc.views_review.review_request" name=rlatest.doc_id request_id=rlatest.pk %}">{% if rlatest.result %}{{ rlatest.result.name }}{% else %}result unavail.{% endif %}</a>
66-
(<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ rlatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">diff</a>){% if not forloop.last %},{% endif %}
67-
</small>
68-
</div>
69-
{% endfor %}
70-
{% endif %}
42+
{% for r in review_requests %}
43+
<div class="panel panel-default review-request">
44+
<div class="panel-heading">
7145

72-
{% if r.form.non_field_errors %}
73-
<div class="alert alert-danger">
74-
{% for e in r.form.non_field_errors %}
75-
{{ e }}
76-
{% endfor %}
77-
</div>
78-
{% endif %}
79-
</td>
80-
<td class="deadline">
81-
{{ r.deadline|date:"Y-m-d" }}
46+
<h3 class="panel-title">
47+
<span class="pull-right">
48+
{{ r.type.name }}
49+
- deadline: {{ r.deadline|date:"Y-m-d" }}
8250
{% if r.due %}<span class="label label-warning">{{ r.due }} day{{ r.due|pluralize }}</span>{% endif %}
83-
</td>
84-
<td>
85-
<input type="hidden" name="reviewrequest" value="{{ r.pk }}">
86-
<input type="hidden" name="{{ r.form.prefix }}-existing_reviewer" value="{{ r.reviewer_id|default:"" }}">
87-
88-
<span class="assign-action">
89-
{% if r.reviewer %}
90-
<button type="button" class="btn btn-default btn-sm" title="Click to reassign reviewer">
91-
{{ r.reviewer.person }}
92-
{% if r.state_id == "accepted" %} <span class="label label-default">accp</span>{% endif %}
93-
{% if r.reviewer_unavailable %}<span class="label label-danger">unavail</span>{% endif %}
94-
</button>
95-
{% else %}
96-
<button type="button" class="btn btn-default btn-sm" title="Click to assign reviewer"><em>not yet assigned</em></button>
97-
{% endif %}
98-
</span>
99-
100-
{{ r.form.action }}
101-
102-
<span class="reviewer-controls form-inline">
103-
<label for="{{ r.form.reviewer.id_for_label }}">Assign:</label>
104-
{{ r.form.reviewer }}
105-
<button type="button" class="btn btn-default btn-sm undo" title="Cancel assignment" data-initial="{{ r.form.fields.reviewer.initial|default:"" }}">Cancel</button>
106-
{% if r.form.reviewer.errors %}
107-
<div class="alert alert-danger">
108-
{% for e in r.form.reviewer.errors %}
109-
{{ e }}
110-
{% endfor %}
111-
</div>
51+
</span>
52+
53+
<a href="{% if r.requested_rev %}{% url "doc_view" name=r.doc.name rev=r.requested_rev %}{% else %}{% url "doc_view" name=r.doc.name %}{% endif %}?include_text=1">{{ r.doc.name }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %}</a>
54+
</h3>
55+
</div>
56+
57+
<div class="panel-body">
58+
<div class="row">
59+
<div class="col-sm-6">
60+
<div class="request-metadata">
61+
{% 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" }}</a>{% else %}Auto-suggested{% endif %}
62+
63+
{% if r.latest_reqs %}
64+
{% for rlatest in r.latest_reqs %}
65+
- previous review of <a href="{% url "doc_view" name=rlatest.doc_id rev=rlatest.reviewed_rev %}?include_text=1">{% if rlatest.doc_id != r.doc_id %}{{ rlatest.doc_id }}{% endif %}-{{ rlatest.reviewed_rev }}</a>:
66+
<a href="{% url "ietf.doc.views_review.review_request" name=rlatest.doc_id request_id=rlatest.pk %}">{% if rlatest.result %}{{ rlatest.result.name }}{% else %}result unavail.{% endif %}</a>
67+
(<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ rlatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">diff</a>){% if not forloop.last %},{% endif %}
68+
{% endfor %}
11269
{% endif %}
113-
</span>
114-
115-
<span class="close-action">
116-
<button type="button" class="btn btn-default btn-sm">Close...</button>
117-
</span>
118-
119-
<span class="close-controls form-inline">
120-
<label for="{{ r.form.reviewer.id_for_label }}">Close:</label>
121-
{{ r.form.close }}
122-
<button type="button" class="btn btn-default btn-sm undo" title="Cancel closing">Cancel</button>
123-
{% if r.form.close.errors %}
124-
<br>
125-
{{ r.form.close.errors }}
70+
</div>
71+
72+
<div><strong>{{ r.doc.title }}</strong></div>
73+
74+
<div>
75+
{{ r.doc.pages }} page{{ r.doc.pages|pluralize }}
76+
- {{ r.doc.friendly_state }}
77+
{% if r.doc.group.type_id != "individ" %}
78+
- <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>
12679
{% endif %}
127-
</span>
128-
</td>
129-
</tr>
130-
{% endfor %}
131-
</tbody>
132-
</table>
80+
</div>
81+
</div>
82+
83+
<div class="col-sm-6 abstract">
84+
{{ r.doc.abstract|linebreaks }}
85+
</div>
86+
</div>
87+
</div>
88+
89+
<div class="panel-footer">
90+
{% if r.form.non_field_errors %}
91+
<div class="alert alert-danger">
92+
{% for e in r.form.non_field_errors %}
93+
{{ e }}
94+
{% endfor %}
95+
</div>
96+
{% endif %}
97+
98+
<input type="hidden" name="reviewrequest" value="{{ r.pk }}">
99+
<input type="hidden" name="{{ r.form.prefix }}-existing_reviewer" value="{{ r.reviewer_id|default:"" }}">
100+
101+
<span class="assign-action">
102+
{% if r.reviewer %}
103+
<button type="button" class="btn btn-default" title="Click to reassign reviewer">
104+
{{ r.reviewer.person }}
105+
{% if r.state_id == "accepted" %} <span class="label label-default">accp</span>{% endif %}
106+
{% if r.reviewer_unavailable %}<span class="label label-danger">unavail</span>{% endif %}
107+
</button>
108+
{% else %}
109+
<button type="button" class="btn btn-default" title="Click to assign reviewer"><em>Not yet assigned</em></button>
110+
{% endif %}
111+
</span>
112+
113+
{{ r.form.action }}
114+
115+
<span class="reviewer-controls form-inline">
116+
<label for="{{ r.form.reviewer.id_for_label }}">Assign:</label>
117+
{{ r.form.reviewer }}
118+
<button type="button" class="btn btn-default undo" title="Cancel assignment" data-initial="{{ r.form.fields.reviewer.initial|default:"" }}">Cancel</button>
119+
{% if r.form.reviewer.errors %}
120+
<div class="alert alert-danger">
121+
{% for e in r.form.reviewer.errors %}
122+
{{ e }}
123+
{% endfor %}
124+
</div>
125+
{% endif %}
126+
</span>
127+
128+
<span class="close-action">
129+
<button type="button" class="btn btn-default">Close...</button>
130+
</span>
131+
132+
<span class="close-controls form-inline">
133+
<label for="{{ r.form.reviewer.id_for_label }}">Close:</label>
134+
{{ r.form.close }}
135+
<button type="button" class="btn btn-default undo" title="Cancel closing">Cancel</button>
136+
{% if r.form.close.errors %}
137+
<br>
138+
{{ r.form.close.errors }}
139+
{% endif %}
140+
</span>
141+
</div>
142+
</div>
143+
{% endfor %}
133144

134145
{% buttons %}
135146
<a href="{% url "ietf.group.views_review.review_requests" group_type=group.type_id acronym=group.acronym %}" class="btn btn-default pull-right">Cancel</a>
136-
<button class="btn btn-primary" type="submit" name="action" value="save">Save changes</button>
137-
<button class="btn btn-primary" type="submit" name="action" value="save-continue">Save and continue editing</button>
138-
<button class="btn btn-default" type="submit" name="action" value="refresh">Refresh (keeping changes)</button>
147+
<button class="btn btn-primary" type="submit" name="action" value="save">Save changes</button>
148+
<button class="btn btn-primary" type="submit" name="action" value="save-continue">Save and continue editing</button>
149+
<button class="btn btn-default" type="submit" name="action" value="refresh">Refresh (keeping changes)</button>
139150
{% endbuttons %}
140151
</form>
141152
{% else %}

0 commit comments

Comments
 (0)