Skip to content

Commit

Permalink
Provide default filters for reviewer settings. Fixes #2093. Commit re…
Browse files Browse the repository at this point in the history
…ady for merge.

 - Legacy-Id: 12541
  • Loading branch information
rjsparks committed Dec 15, 2016
1 parent 68bdff6 commit df86798
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
9 changes: 6 additions & 3 deletions ietf/group/views_review.py
Expand Up @@ -25,7 +25,8 @@
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
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions ietf/ietfauth/views.py
Expand Up @@ -56,7 +56,7 @@
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

Expand Down Expand Up @@ -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)

Expand Down
11 changes: 10 additions & 1 deletion ietf/review/utils.py
Expand Up @@ -691,6 +691,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
Expand All @@ -708,7 +717,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)
Expand Down

0 comments on commit df86798

Please sign in to comment.