Show whether a person is nomcom eligible on their edit_profile page. Related to #2257 and #2323. Commit ready for merge.

- Legacy-Id: 14086
This commit is contained in:
Robert Sparks 2017-08-28 19:28:44 +00:00
parent e5f10bfee9
commit dc20598999
5 changed files with 42 additions and 1 deletions

View file

@ -278,6 +278,7 @@ def profile(request):
'roles': roles,
'emails': emails,
'new_email_forms': new_email_forms,
'settings':settings,
})
def confirm_new_email(request, auth):

View file

View file

@ -0,0 +1,16 @@
# Copyright The IETF Trust 2007, All Rights Reserved
import datetime
from django import template
import debug # pyflakes:ignore
from ietf.person.utils import is_nomcom_eligible as util_is_nomcom_eligible
register = template.Library()
@register.filter
def is_nomcom_eligible(person, date=datetime.date.today()):
return util_is_nomcom_eligible(person,date)

View file

@ -11,8 +11,9 @@ from django.contrib.auth.models import User
import debug # pyflakes:ignore
from ietf.nomcom.models import Nominee
from ietf.person.models import Person
from ietf.person.models import Person, Email
from ietf.utils.mail import send_mail
from ietf.meeting.models import Meeting
def merge_persons(source, target, file=sys.stdout, verbose=False):
changes = []
@ -181,3 +182,18 @@ def determine_merge_order(source,target):
if source.user and target.user:
source,target = sorted([source,target],key=lambda a: a.user.last_login if a.user.last_login else datetime.datetime.min)
return source,target
def attended_ietf_meetings(person):
return Meeting.objects.filter(type='ietf',meetingregistration__email__in=Email.objects.filter(person=person).values_list('address',flat=True))
def attended_in_last_five_ietf_meetings(person, date=datetime.datetime.today()):
previous_five = Meeting.objects.filter(type='ietf',date__lte=date).order_by('-date')[:5]
attended = attended_ietf_meetings(person)
return set(previous_five).intersection(attended)
def is_nomcom_eligible(person, date=datetime.date.today()):
attended = attended_in_last_five_ietf_meetings(person, date)
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()
is_iaoc = person.role_set.filter(group__acronym='iaoc',name_id__in=['member','chair']).exists()
return len(attended)>=3 and not (is_iesg or is_iab or is_iaoc)

View file

@ -4,6 +4,8 @@
{% load widget_tweaks bootstrap3 %}
{% load person_filters %}
{% block title %}Profile for {{ user }}{% endblock %}
{% block content %}
@ -29,6 +31,12 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Nomcom Eligible</label>
<div class="col-sm-1 form-control-static">{{person|is_nomcom_eligible|yesno:'Yes,No,No'}}</div>
<div class="col-sm-9 alert alert-info form-control-static">This calculation is EXPERIMENTAL.<br/>If you believe it is incorrect, make sure you've added all the email addresses you've registered for IETF meetings with to the list below.<br/>If you've done so and the calculation is still incorrect, please send a note to <a href="{{settings.SECRETARIAT_TICKET_EMAIL}}">{{settings.SECRETARIAT_TICKET_EMAIL}}</a>.<br/>See <a href="{% url 'ietf.doc.views_doc.document_main' name='rfc3777' %}">RFC 3777</a> for eligibility requirements.</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Email addresses</label>
<div class="col-sm-10">