Merged in [17650] from rjsparks@nostrum.com:
Refactor disqualifying roles into one place.
- Legacy-Id: 17652
Note: SVN reference [17650] has been migrated to Git commit d981076432
This commit is contained in:
commit
19a26dc39a
|
@ -14,9 +14,10 @@ import debug # pyflakes:ignore
|
||||||
|
|
||||||
from ietf.dbtemplate.models import DBTemplate
|
from ietf.dbtemplate.models import DBTemplate
|
||||||
from ietf.meeting.models import Session, Meeting, SchedulingEvent, TimeSlot
|
from ietf.meeting.models import Session, Meeting, SchedulingEvent, TimeSlot
|
||||||
from ietf.group.models import Group
|
from ietf.group.models import Group, Role
|
||||||
from ietf.group.utils import can_manage_materials
|
from ietf.group.utils import can_manage_materials
|
||||||
from ietf.name.models import SessionStatusName
|
from ietf.name.models import SessionStatusName
|
||||||
|
from ietf.nomcom.utils import DISQUALIFYING_ROLE_QUERY_EXPRESSION
|
||||||
from ietf.person.models import Email
|
from ietf.person.models import Email
|
||||||
from ietf.secr.proceedings.proc_utils import import_audio_files
|
from ietf.secr.proceedings.proc_utils import import_audio_files
|
||||||
|
|
||||||
|
@ -174,13 +175,9 @@ def attended_in_last_five_ietf_meetings(person, date=datetime.datetime.today()):
|
||||||
|
|
||||||
def is_nomcom_eligible(person, date=datetime.date.today()):
|
def is_nomcom_eligible(person, date=datetime.date.today()):
|
||||||
attended = attended_in_last_five_ietf_meetings(person, date)
|
attended = attended_in_last_five_ietf_meetings(person, date)
|
||||||
# See RFC8713 section 4.15
|
disqualifying_roles = Role.objects.filter(person=person).filter(DISQUALIFYING_ROLE_QUERY_EXPRESSION)
|
||||||
is_isoc_board = person.role_set.filter(group__acronym='isocbot', name_id__in=['member', 'chair']).exists()
|
return len(attended)>=3 and not disqualifying_roles.exists()
|
||||||
is_ietf_trust = person.role_set.filter(group__acronym='ietf-trust', name_id__in=['member', 'chair']).exists()
|
|
||||||
is_llc_board = person.role_set.filter(group__acronym='llc-board', name_id__in=['member', 'chair']).exists()
|
|
||||||
is_iesg = person.role_set.filter(group__type_id='area',group__state='active',name_id='ad').exists()
|
|
||||||
is_iab = person.role_set.filter(group__acronym='iab',name_id__in=['member','chair']).exists()
|
|
||||||
return len(attended)>=3 and not any([is_isoc_board, is_ietf_trust, is_llc_board, is_iesg, is_iab])
|
|
||||||
|
|
||||||
def sort_accept_tuple(accept):
|
def sort_accept_tuple(accept):
|
||||||
tup = []
|
tup = []
|
||||||
|
|
|
@ -13,6 +13,7 @@ from email.header import decode_header
|
||||||
from email.iterators import typed_subpart_iterator
|
from email.iterators import typed_subpart_iterator
|
||||||
from email.utils import parseaddr
|
from email.utils import parseaddr
|
||||||
|
|
||||||
|
from django.db.models import Q
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
@ -57,6 +58,11 @@ DEFAULT_NOMCOM_TEMPLATES = [HOME_TEMPLATE,
|
||||||
IESG_GENERIC_REQUIREMENTS_TEMPLATE,
|
IESG_GENERIC_REQUIREMENTS_TEMPLATE,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# See RFC8713 section 4.15
|
||||||
|
DISQUALIFYING_ROLE_QUERY_EXPRESSION = ( Q(group__acronym__in=['isocbot', 'ietf-trust', 'llc-board', 'iab'], name_id__in=['member', 'chair'])
|
||||||
|
| Q(group__type_id='area', group__state='active',name_id='ad')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_nomcom_by_year(year):
|
def get_nomcom_by_year(year):
|
||||||
from ietf.nomcom.models import NomCom
|
from ietf.nomcom.models import NomCom
|
||||||
|
@ -470,4 +476,5 @@ def create_feedback_email(nomcom, msg):
|
||||||
|
|
||||||
class EncryptedException(Exception):
|
class EncryptedException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ from django.utils.encoding import force_bytes
|
||||||
from ietf.dbtemplate.models import DBTemplate
|
from ietf.dbtemplate.models import DBTemplate
|
||||||
from ietf.dbtemplate.views import group_template_edit, group_template_show
|
from ietf.dbtemplate.views import group_template_edit, group_template_show
|
||||||
from ietf.name.models import NomineePositionStateName, FeedbackTypeName
|
from ietf.name.models import NomineePositionStateName, FeedbackTypeName
|
||||||
from ietf.group.models import Group, GroupEvent
|
from ietf.group.models import Group, GroupEvent, Role
|
||||||
from ietf.message.models import Message
|
from ietf.message.models import Message
|
||||||
from ietf.meeting.models import Meeting
|
from ietf.meeting.models import Meeting
|
||||||
|
|
||||||
|
@ -37,7 +37,8 @@ from ietf.nomcom.models import (Position, NomineePosition, Nominee, Feedback, No
|
||||||
FeedbackLastSeen, Topic, TopicFeedbackLastSeen, )
|
FeedbackLastSeen, Topic, TopicFeedbackLastSeen, )
|
||||||
from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key,
|
from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key,
|
||||||
get_hash_nominee_position, send_reminder_to_nominees,
|
get_hash_nominee_position, send_reminder_to_nominees,
|
||||||
HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE)
|
HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE,
|
||||||
|
DISQUALIFYING_ROLE_QUERY_EXPRESSION)
|
||||||
from ietf.ietfauth.utils import role_required
|
from ietf.ietfauth.utils import role_required
|
||||||
from ietf.person.models import Person
|
from ietf.person.models import Person
|
||||||
from ietf.utils import log
|
from ietf.utils import log
|
||||||
|
@ -1251,14 +1252,8 @@ def eligible(request, year):
|
||||||
registration_emails = m.meetingregistration_set.values_list('email',flat=True)
|
registration_emails = m.meetingregistration_set.values_list('email',flat=True)
|
||||||
attendees[m] = Person.objects.filter(email__address__in=registration_emails).distinct()
|
attendees[m] = Person.objects.filter(email__address__in=registration_emails).distinct()
|
||||||
# See RFC8713 section 4.15
|
# See RFC8713 section 4.15
|
||||||
potentials.update(
|
disqualified_roles = Role.objects.filter(DISQUALIFYING_ROLE_QUERY_EXPRESSION)
|
||||||
attendees[m] \
|
potentials.update(attendees[m].exclude(role__in=disqualified_roles))
|
||||||
.exclude(role__group__acronym='isocbot', role__name_id__in=['member','chair']) \
|
|
||||||
.exclude(role__group__acronym='ietf-trust', role__name_id__in=['member','chair']) \
|
|
||||||
.exclude(role__group__acronym='llc-board', role__name_id__in=['member','chair']) \
|
|
||||||
.exclude(role__group__type_id='area',role__group__state='active',role__name_id='ad') \
|
|
||||||
.exclude(role__group__acronym='iab',role__name_id__in=['member','chair'])
|
|
||||||
)
|
|
||||||
eligible_persons = []
|
eligible_persons = []
|
||||||
for p in potentials:
|
for p in potentials:
|
||||||
count = 0
|
count = 0
|
||||||
|
|
Loading…
Reference in a new issue