From fa684cf6d2f9d5d35ae1b965c4b32fdf0f395430 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 15 Dec 2016 21:57:46 +0000 Subject: [PATCH] Merged in [12541] from rjsparks@nostrum.com: Provide default filters for reviewer settings. Fixes #2093. - Legacy-Id: 12546 Note: SVN reference [12541] has been migrated to Git commit df86798cf35ac67fd488c3c685c30cd83f3f99d2 --- ietf/group/views_review.py | 9 ++++++--- ietf/ietfauth/views.py | 4 ++-- ietf/review/utils.py | 11 ++++++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ietf/group/views_review.py b/ietf/group/views_review.py index a569370c7..9f757713a 100644 --- a/ietf/group/views_review.py +++ b/ietf/group/views_review.py @@ -25,7 +25,8 @@ from ietf.review.utils import (can_manage_review_requests_for_team, email_reviewer_availability_change, reviewer_rotation_list, latest_review_requests_for_reviewers, - augment_review_requests_with_events) + augment_review_requests_with_events, + get_default_filter_re,) from ietf.doc.models import LastCallDocEvent from ietf.group.models import Role from ietf.group.utils import get_group_or_404, construct_group_menu_context @@ -488,8 +489,10 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None): or can_manage_review_requests_for_team(request.user, group)): return HttpResponseForbidden("You do not have permission to perform this action") - settings = (ReviewerSettings.objects.filter(person=reviewer, team=group).first() - or ReviewerSettings(person=reviewer, team=group)) + settings = ReviewerSettings.objects.filter(person=reviewer, team=group).first() + if not settings: + settings = ReviewerSettings(person=reviewer, team=group) + settings.filter_re = get_default_filter_re(reviewer) back_url = request.GET.get("next") if not back_url: diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 3449814dd..8b3c18ff1 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -56,7 +56,7 @@ from ietf.ietfauth.utils import role_required from ietf.mailinglists.models import Subscribed, Whitelisted from ietf.person.models import Person, Email, Alias from ietf.review.models import ReviewRequest, ReviewerSettings, ReviewWish -from ietf.review.utils import unavailable_periods_to_list +from ietf.review.utils import unavailable_periods_to_list, get_default_filter_re from ietf.utils.mail import send_mail from ietf.doc.fields import SearchableDocumentField @@ -433,7 +433,7 @@ def review_overview(request): roles = { o.group_id: o for o in Role.objects.filter(name="reviewer", person__user=request.user, group__in=teams) } for t in teams: - t.reviewer_settings = settings.get(t.pk) or ReviewerSettings(team=t) + t.reviewer_settings = settings.get(t.pk) or ReviewerSettings(team=t,filter_re = get_default_filter_re(request.user.person)) t.unavailable_periods = unavailable_periods.get(t.pk, []) t.role = roles.get(t.pk) diff --git a/ietf/review/utils.py b/ietf/review/utils.py index 6131b8ea3..274be2ab7 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -694,6 +694,15 @@ def setup_reviewer_field(field, review_req): field.choices = choices +def get_default_filter_re(person): + if type(person) != Person: + person = Person.objects.get(id=person) + groups_to_avoid = [r.group for r in person.role_set.filter(name='chair',group__type__in=['wg','rg'])] + if not groups_to_avoid: + return '^draft-%s-.*$' % ( person.last_name().lower(), ) + else: + return '^draft-(%s|%s)-.*$' % ( person.last_name().lower(), '|'.join(['ietf-%s' % g.acronym for g in groups_to_avoid])) + def make_assignment_choices(email_queryset, review_req): doc = review_req.doc team = review_req.team @@ -711,7 +720,7 @@ def make_assignment_choices(email_queryset, review_req): for p in possible_person_ids: if p not in reviewer_settings: - reviewer_settings[p] = ReviewerSettings(team=team) + reviewer_settings[p] = ReviewerSettings(team=team, filter_re = get_default_filter_re(p)) # frequency days_needed_for_reviewers = days_needed_to_fulfill_min_interval_for_reviewers(team)