From 1f71268da13a8f859d7c4f586f12a1e463403874 Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Tue, 23 Aug 2016 12:12:24 +0000 Subject: [PATCH] More polish on manage review requests page: Add save and continue editing button, reverse sort order so latest (and probably most interesting) is at the top, disable save buttons when there are no changes to save - Legacy-Id: 11843 --- ietf/group/tests_review.py | 2 +- ietf/group/views.py | 2 +- ietf/group/views_review.py | 13 +++++++++---- ietf/review/utils.py | 2 +- ietf/static/ietf/js/manage-review-requests.js | 9 +++++++++ ietf/templates/group/manage_review_requests.html | 1 + 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index 76810e3ba..b99a4f9ee 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -123,7 +123,7 @@ class ReviewTests(TestCase): "r{}-action".format(review_req2.pk): "assign", "r{}-reviewer".format(review_req2.pk): new_reviewer.pk, - "action": "save", + "action": "save-continue", }) self.assertEqual(r.status_code, 200) content = unicontent(r).lower() diff --git a/ietf/group/views.py b/ietf/group/views.py index 18b444baf..221e0587e 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -649,7 +649,7 @@ def review_requests(request, acronym, group_type=None): open_review_requests = list(ReviewRequest.objects.filter( team=group, state__in=("requested", "accepted") - ).prefetch_related("reviewer", "type", "state").order_by("time", "id")) + ).prefetch_related("reviewer", "type", "state").order_by("-time", "-id")) open_review_requests += suggested_review_requests_for_team(group) diff --git a/ietf/group/views_review.py b/ietf/group/views_review.py index a1549dff2..f7af739cf 100644 --- a/ietf/group/views_review.py +++ b/ietf/group/views_review.py @@ -72,7 +72,7 @@ def manage_review_requests(request, acronym, group_type=None): review_requests = list(ReviewRequest.objects.filter( team=group, state__in=("requested", "accepted") - ).prefetch_related("reviewer", "type", "state").order_by("time", "id")) + ).prefetch_related("reviewer", "type", "state").order_by("-time", "-id")) review_requests += suggested_review_requests_for_team(group) @@ -104,7 +104,8 @@ def manage_review_requests(request, acronym, group_type=None): newly_closed = newly_opened = newly_assigned = 0 if request.method == "POST": - saving = request.POST.get("action") == "save" + form_action = request.POST.get("action", "") + saving = form_action.startswith("save") # check for conflicts review_requests_dict = { unicode(r.pk): r for r in review_requests } @@ -151,8 +152,12 @@ def manage_review_requests(request, acronym, group_type=None): kwargs = { "acronym": group.acronym } if group_type: kwargs["group_type"] = group_type - import ietf.group.views - return redirect(ietf.group.views.review_requests, **kwargs) + + if form_action == "save-continue": + return redirect(manage_review_requests, **kwargs) + else: + import ietf.group.views + return redirect(ietf.group.views.review_requests, **kwargs) return render(request, 'group/manage_review_requests.html', { 'group': group, diff --git a/ietf/review/utils.py b/ietf/review/utils.py index 443c19cbc..b98b11439 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -231,7 +231,7 @@ def suggested_review_requests_for_team(team): res = [r for r in requests.itervalues() if not any(blocks(e, r) for e in existing_requests[r.doc_id])] - res.sort(key=lambda r: (r.deadline, r.doc_id)) + res.sort(key=lambda r: (r.deadline, r.doc_id), reversed=True) return res def extract_revision_ordered_review_requests_for_documents(queryset, names): diff --git a/ietf/static/ietf/js/manage-review-requests.js b/ietf/static/ietf/js/manage-review-requests.js index 75f924a85..cf9cbe8d7 100644 --- a/ietf/static/ietf/js/manage-review-requests.js +++ b/ietf/static/ietf/js/manage-review-requests.js @@ -1,5 +1,10 @@ $(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(); @@ -17,6 +22,8 @@ $(document).ready(function () { row.find(".reviewer-controls,.close-controls").hide(); row.find(".assign-action,.close-action").show(); } + + updateSaveButtons(); } form.find(".assign-action button").on("click", function () { @@ -89,4 +96,6 @@ $(document).ready(function () { var row = $(this).closest("tr"); setControlDisplay(row); }); + + updateSaveButtons(); }); diff --git a/ietf/templates/group/manage_review_requests.html b/ietf/templates/group/manage_review_requests.html index 8b526e90c..a6e7daf39 100644 --- a/ietf/templates/group/manage_review_requests.html +++ b/ietf/templates/group/manage_review_requests.html @@ -127,6 +127,7 @@ {% buttons %} Cancel + {% endbuttons %}