Provide default filters for reviewer settings. Fixes #2093. Commit ready for merge.
- Legacy-Id: 12541
This commit is contained in:
parent
68bdff6fd5
commit
df86798cf3
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue